coding modulo ˜ – le wagon bootcamp · favorecem também um diálogo mais ˜uido e capacitado...

7
OBJETIVO GERAL E METODOLOGIA coding BOOTCAMP "Um Bootcamp é um programa de treinamento técnico intensivo voltado para o ensino de habilidades, por meio de aulas teóricas e práticas, utilizando-se de metodologias aplicadas e colaborativas." Os bootcamps combinam uma dose certa de pressão e motivação num ambiente de imersão (várias horas por dia durante vários dias seguidos) em atividades práticas. As atividades práticas são precedidas por apresentação teórica e sintética sobre os principais conceitos envolvidos. Os alunos são estimulados a resolverem pequenos problemas individualmente, consultando colegas ou instrutores presentes. O trabalho colaborativo é estimulado em cursos do tipo bootcamps." A escolha de realizar um curso intensivo em formato de Bootcamp busca atender à exigência por novos modelos de ensino e aprendizagem, com metodologias mais ágeis e focado em desenvolver habilidades específicas. Esse formato de curso aplicado ao ensino de programação permite ao aluno a vivência de uma experiência de aprendizagem intensa e focada, priorizando a aplicação prática dos conhecimentos, em atividades monitoradas por professores e/ou mentores especializados. O Coding Bootcamp ENAP é uma experiência imersiva de capacitação voltada para o desenvolvimento de habilidades na área de programação, desenvolvimento de soluções digitais e análise de dados, onde servidores públicos terão a oportunidade de aprender conceitos básicos e desenvolver soluções digitais para problemas do dia-a-dia. Esse projeto é um investimento da Escola na alavancagem do potencial criativo dos servidores públicos, acreditando que o aprendizado dessas linguagens possibilita o desenvolvimento de novas competências na resolução de problemas complexos, em perspectiva colaborativa e horizontal. Trata-se de iniciativa inovadora da Enap que visa ao desenvolvimento de competências para melhoria da gestão e da prestação de serviços públicos, em consonância com os desafios da transformação digital no setor público. Nesse projeto inovador, a ENAP utilizará ferramentas metodológicas testadas internacionalmente em Bootcamps de Programação (metodologia Le Wagon), com métodos dinâmicos e práticos de ensino de Desenvolvimento Web. A customização do curso em metodologia bootcamp para o serviço público buscou ofertar aos alunos a oportunidade de se usufruir da licença capacitação na aquisição e no treinamento em habilidades necessárias para o incremento da produtividade e promoção do letramento digital na Administração Pública. Para tanto, acrescentou-se o segundo módulo do curso – Análise de Dados e Machine Learning, que contará com a colaboração de especialistas de alto nível para o ensino de conceitos essenciais demandados para o tratamento, processamento, análise e interpretação da informação, dos dados, das estatísticas. Compreender a lógica de construção das soluções digitais e ser capaz de desenvolver algoritmos e programas de computador são habilidades que expandem significativamente o perfil e a quantidade de problemas que um profissional consegue resolver. Favorecem também um diálogo mais fluido e capacitado com as áreas e profissionais de TI. Os alunos terão ainda a oportunidade de desenvolver projetos personalizados, sob supervisão de experts na área, como forma de aplicação imediata dos conhecimentos.

Upload: others

Post on 18-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: coding MODULO ˜ – LE WAGON BOOTCAMP · Favorecem também um diálogo mais ˜uido e capacitado com as áreas e pro˚ssionais de TI. Os alunos terão ainda a oportunidade de desenvolver

OBJETIVO GERAL E METODOLOGIA

MODULO 1 – LE WAGON

Objetivos de aprendizagem

Capacidades e habilidades que os alunos estarão aptos a realizar depois do curso

Aprendizados sobre programação

Em 9 semanas, os estudantes do ENAP serão capazes de:

• Entender os conceitos fundamentais da programação orientada a objeto;

• Estruturar seu software seguindo padrões de design como MVC;

• Integrar um 3° serviço usando API ou coletar dados HTML;

• Desenhar uma base de dados relacional e construir requisições com SQL;

• Construir sua UI (User Interface/Interface de Usuário) seguindo framework de Atomic Design;

• Programar um biblioteca de CSS usando técnicas recentes como �exbox ou CSS grid;

• Aprender ES6 (última versão do Javascript) como uma segunda linguagem de programação;

• Adotar o work�ow técnico correto: desenhar sua wireframe & mockup, testar seu UX com um protótipo, dividir suas user stories entre toda sua equipe e colaborar com a branch e pull requests usando Git e Github;

• Descobrir TDD (Test Driven Development/Desenvolvimento Orientado a Testes) e aprender como cobrir o código de suas aplicações com testes unitários.

Aprendizados sobre produto digital

Os alunos também irão dominar todas as habilidades necessárias para criar produtos digitais. Para nossos alunos, ser um ótimo desenvolvedor não signi�ca apenas escrever um bom código, mas também é importante dominar todas as habilidades necessárias para construir um produto tecnológico:

• Habilidades de engenharia para desenhar sua base de dados e seu software;

• Habilidades de UX Design para construir features que seus usuários querem realmente;

• Habilidades de UI Design para construir interfaces intuitivas;

• Habilidades de Design Grá�co para desenhar um produto bonito;

• Habilidades Analíticas para observar o comportamento dos seus usuários;

• Habilidades de colaboração para trabalhar em uma equipe técnica com o work�ow correto;

Conteúdo Programático

Prepwork

O curso é intenso e abrange muitos tópicos de programação. Isso pode ser assustador se você for novo na área, mas lembre-se: o curso também pode ser feito por iniciantes em tecnologia. Para garantir que todos entrem com um nível parecido, os alunos devem concluir todo o Prepwork antes do primeiro dia do curso. O Prepwork leva entre 30 e 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 - �uxo de trabalho técnico

Setup

Instale ferramentas pro�ssionais de programadores que irão prepará-lo para as próximas semanas:• Noções básicas sobre Command Line• Crie, atualize e exclua arquivos e pastas pela Command Line• Navegue em um sistema de arquivos• Instale o Ruby e uma ferramenta para Gerenciamento de Versões• Principais pacotes para programadores• Controle as versões com o git• Con�rme e envie ao Github

Programação básica

Programação básica: Escreva algoritmos manipulando variáveis, loops, condições e estruturas de dados como Array e Hash. Analise e armazene 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

Arquitetura de software

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)

Base de Dados & ORM

Os softwares precisam armazenar informações em um banco de dados. 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

Construindo interfaces web

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 �exbox e CSS grid• Consultas de mídia CSS para Design Adaptativo• Princípios básicos do Bootstrap e Sistema de Grid Responsivo

ES6, a última versão do JavaScript

Aprenda ES6 - sua segunda linguagem de programação após o Ruby - 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

Juntando tudo com Rails

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

codingBOOTCAMP

"Um Bootcamp é um programa de treinamento técnico intensivo voltado para o ensino de habilidades, por meio de aulas teóricas e práticas, utilizando-se de metodologias aplicadas e colaborativas." Os bootcamps combinam uma dose certa de pressão e motivação num ambiente de imersão (várias horas por dia durante vários dias seguidos) em atividades práticas. As atividades práticas são precedidas por apresentação teórica e sintética sobre os principais conceitos envolvidos. Os alunos são estimulados a resolverem pequenos problemas individualmente, consultando colegas ou instrutores presentes. O trabalho colaborativo é estimulado em cursos do tipo bootcamps."

A escolha de realizar um curso intensivo em formato de Bootcamp busca atender à exigência por novos modelos de ensino e aprendizagem, com metodologias mais ágeis e focado em desenvolver habilidades especí�cas. Esse formato de curso aplicado ao ensino de programação permite ao aluno a vivência de uma experiência de aprendizagem intensa e focada, priorizando a aplicação prática dos conhecimentos, em atividades monitoradas por professores e/ou mentores especializados.

O Coding Bootcamp ENAP é uma experiência imersiva de capacitação voltada para o desenvolvimento de habilidades na área de programação, desenvolvimento de soluções digitais e análise de dados, onde servidores públicos terão a oportunidade de aprender conceitos básicos e desenvolver soluções digitais para problemas do dia-a-dia. Esse projeto é um investimento da Escola na alavancagem do potencial criativo dos servidores públicos, acreditando que o aprendizado dessas linguagens possibilita o desenvolvimento de novas competências na resolução de problemas complexos, em perspectiva colaborativa e horizontal. Trata-se de iniciativa inovadora da Enap que visa ao desenvolvimento de competências para melhoria da gestão e da prestação de serviços públicos, em consonância com os desa�os da transformação digital no setor público.

Nesse projeto inovador, a ENAP utilizará ferramentas metodológicas testadas internacionalmente em Bootcamps de Programação (metodologia Le Wagon), com métodos dinâmicos e práticos de ensino de Desenvolvimento Web. A customização do curso em metodologia bootcamp para o serviço público buscou ofertar aos alunos a oportunidade de se usufruir da licença capacitação na aquisição e no treinamento em habilidades necessárias para o incremento da produtividade e promoção do letramento digital na Administração Pública. Para tanto, acrescentou-se o segundo módulo do curso – Análise de Dados e Machine Learning, que contará com a colaboração de especialistas de alto nível para o ensino de conceitos essenciais demandados para o tratamento, processamento, análise e interpretação da informação, dos dados, das estatísticas.

Compreender a lógica de construção das soluções digitais e ser capaz de desenvolver algoritmos e programas de computador são habilidades que expandem signi�cativamente o per�l e a quantidade de problemas que um pro�ssional consegue resolver. Favorecem também um diálogo mais �uido e capacitado com as áreas e pro�ssionais de TI.

Os alunos terão ainda a oportunidade de desenvolver projetos personalizados, sob supervisão de experts na área, como forma de aplicação imediata dos conhecimentos.

Construindo uma marketplace em equipe (tipo Airbnb)

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 �uxo 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, geocodi�cação e mapas• Trabalhos em segundo plano com Sidekiq• Upload de imagem com Cloudinary• Implementação contínua no Heroku

Projetos Finais

Os projetos �nais 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

MODULO 2 - ENAP

Objetivos de aprendizagem

Promover capacidades e habilidades para que os alunos estejam aptos a aplicar em seu ambiente de trabalho depois do curso

Aprendizados sobre análise de dados

O objetivo deste módulo é capacitar os alunos a organizar, integrar e analisar seus próprios conjuntos de dados. A administração pública (federal, principalmente) já tem muitos dados em formato digital e poucas pessoas habilitadas para organizar, limpar, integrar e analisar esses dados. Esta competência já se tornou central e suprir essa lacuna pode trazer mais celeridade e e�ciência para administração pública.

Ao �nal do curso, o aluno 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.

Aprendizados sobre machine learning

O objetivo desta parte do curso é ensinar o aluno a resolver problemas reais a partir de técnicas de aprendizado de máquina. O domínio destas técnicas expande o rol de problemas que podem ser adequadamente resolvidos pelas tecnologias da informação.

Ao �nal do curso, o aluno será capaz de identi�car 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.

Conteúdo Programático

Análise de dados

• Introdução a linguagem de programação python.

• Introdução ao Pandas (Python):o Estruturas de dados do Pandas.o Importação, exportação, integração, manipulação e limpeza de dados.o Filtro e Agregação de dados.o Carga e coleta de dados (CSV, API, Web Scraping, SQL).o Visualização de dados em Python.

• Conceitos de Estatística Descritiva e Probabilidade.

• Análise de dados em forma de grá�cos.

• Experimentos.

Machine Learning

• Diferenças entre programação e aprendizado de máquina (ML): O desa�o de prever resultados de um fenômeno sem um modelo explícito de seu funcionamento.

• Categorias de machine learning (ML): Supervisionado, não supervisionado.

• Diversidade de aplicações.

• Desa�o: estimativa de preço de imóveis em função de suas características.

• Regressão linear:o Intuição, cenários de uso.o Preparação de dados para modelização.o Uso da biblioteca python scikit-learn.

• Conceitos gerais de ML, aplicados ao caso básico de regressão linear:o Particionamento dos dados em treinamento/teste/validação;o Over e under �tting;o Determinantes de desempenho: mais dados, controle de complexidade do modelo, regularização, data augmentation; otimização e gradiente descendente.

• Regressão logística: Extensão da regressão linear como primeiro classi�cador.

• Árvore de decisão:o Construção e interpretação.o Extensão para Random Forest, aplicação sistemática em tarefas de previsão.o Desa�o: prever sobreviventes do naufrágio do Titanic.

• 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.

Page 2: coding MODULO ˜ – LE WAGON BOOTCAMP · Favorecem também um diálogo mais ˜uido e capacitado com as áreas e pro˚ssionais de TI. Os alunos terão ainda a oportunidade de desenvolver

MODULO 1 – LE WAGON

Objetivos de aprendizagem

Capacidades e habilidades que os alunos estarão aptos a realizar depois do curso

Aprendizados sobre programação

Em 9 semanas, os estudantes do ENAP serão capazes de:

• Entender os conceitos fundamentais da programação orientada a objeto;

• Estruturar seu software seguindo padrões de design como MVC;

• Integrar um 3° serviço usando API ou coletar dados HTML;

• Desenhar uma base de dados relacional e construir requisições com SQL;

• Construir sua UI (User Interface/Interface de Usuário) seguindo framework de Atomic Design;

• Programar um biblioteca de CSS usando técnicas recentes como �exbox ou CSS grid;

• Aprender ES6 (última versão do Javascript) como uma segunda linguagem de programação;

• Adotar o work�ow técnico correto: desenhar sua wireframe & mockup, testar seu UX com um protótipo, dividir suas user stories entre toda sua equipe e colaborar com a branch e pull requests usando Git e Github;

• Descobrir TDD (Test Driven Development/Desenvolvimento Orientado a Testes) e aprender como cobrir o código de suas aplicações com testes unitários.

Aprendizados sobre produto digital

Os alunos também irão dominar todas as habilidades necessárias para criar produtos digitais. Para nossos alunos, ser um ótimo desenvolvedor não signi�ca apenas escrever um bom código, mas também é importante dominar todas as habilidades necessárias para construir um produto tecnológico:

• Habilidades de engenharia para desenhar sua base de dados e seu software;

• Habilidades de UX Design para construir features que seus usuários querem realmente;

• Habilidades de UI Design para construir interfaces intuitivas;

• Habilidades de Design Grá�co para desenhar um produto bonito;

• Habilidades Analíticas para observar o comportamento dos seus usuários;

• Habilidades de colaboração para trabalhar em uma equipe técnica com o work�ow correto;

Conteúdo Programático

Prepwork

O curso é intenso e abrange muitos tópicos de programação. Isso pode ser assustador se você for novo na área, mas lembre-se: o curso também pode ser feito por iniciantes em tecnologia. Para garantir que todos entrem com um nível parecido, os alunos devem concluir todo o Prepwork antes do primeiro dia do curso. O Prepwork leva entre 30 e 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 - �uxo de trabalho técnico

Setup

Instale ferramentas pro�ssionais de programadores que irão prepará-lo para as próximas semanas:• Noções básicas sobre Command Line• Crie, atualize e exclua arquivos e pastas pela Command Line• Navegue em um sistema de arquivos• Instale o Ruby e uma ferramenta para Gerenciamento de Versões• Principais pacotes para programadores• Controle as versões com o git• Con�rme e envie ao Github

Programação básica

Programação básica: Escreva algoritmos manipulando variáveis, loops, condições e estruturas de dados como Array e Hash. Analise e armazene 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

Arquitetura de software

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)

Base de Dados & ORM

Os softwares precisam armazenar informações em um banco de dados. 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

Construindo interfaces web

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 �exbox e CSS grid• Consultas de mídia CSS para Design Adaptativo• Princípios básicos do Bootstrap e Sistema de Grid Responsivo

ES6, a última versão do JavaScript

Aprenda ES6 - sua segunda linguagem de programação após o Ruby - 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

Juntando tudo com Rails

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

"Um Bootcamp é um programa de treinamento técnico intensivo voltado para o ensino de habilidades, por meio de aulas teóricas e práticas, utilizando-se de metodologias aplicadas e colaborativas." Os bootcamps combinam uma dose certa de pressão e motivação num ambiente de imersão (várias horas por dia durante vários dias seguidos) em atividades práticas. As atividades práticas são precedidas por apresentação teórica e sintética sobre os principais conceitos envolvidos. Os alunos são estimulados a resolverem pequenos problemas individualmente, consultando colegas ou instrutores presentes. O trabalho colaborativo é estimulado em cursos do tipo bootcamps."

A escolha de realizar um curso intensivo em formato de Bootcamp busca atender à exigência por novos modelos de ensino e aprendizagem, com metodologias mais ágeis e focado em desenvolver habilidades especí�cas. Esse formato de curso aplicado ao ensino de programação permite ao aluno a vivência de uma experiência de aprendizagem intensa e focada, priorizando a aplicação prática dos conhecimentos, em atividades monitoradas por professores e/ou mentores especializados.

O Coding Bootcamp ENAP é uma experiência imersiva de capacitação voltada para o desenvolvimento de habilidades na área de programação, desenvolvimento de soluções digitais e análise de dados, onde servidores públicos terão a oportunidade de aprender conceitos básicos e desenvolver soluções digitais para problemas do dia-a-dia. Esse projeto é um investimento da Escola na alavancagem do potencial criativo dos servidores públicos, acreditando que o aprendizado dessas linguagens possibilita o desenvolvimento de novas competências na resolução de problemas complexos, em perspectiva colaborativa e horizontal. Trata-se de iniciativa inovadora da Enap que visa ao desenvolvimento de competências para melhoria da gestão e da prestação de serviços públicos, em consonância com os desa�os da transformação digital no setor público.

Nesse projeto inovador, a ENAP utilizará ferramentas metodológicas testadas internacionalmente em Bootcamps de Programação (metodologia Le Wagon), com métodos dinâmicos e práticos de ensino de Desenvolvimento Web. A customização do curso em metodologia bootcamp para o serviço público buscou ofertar aos alunos a oportunidade de se usufruir da licença capacitação na aquisição e no treinamento em habilidades necessárias para o incremento da produtividade e promoção do letramento digital na Administração Pública. Para tanto, acrescentou-se o segundo módulo do curso – Análise de Dados e Machine Learning, que contará com a colaboração de especialistas de alto nível para o ensino de conceitos essenciais demandados para o tratamento, processamento, análise e interpretação da informação, dos dados, das estatísticas.

Compreender a lógica de construção das soluções digitais e ser capaz de desenvolver algoritmos e programas de computador são habilidades que expandem signi�cativamente o per�l e a quantidade de problemas que um pro�ssional consegue resolver. Favorecem também um diálogo mais �uido e capacitado com as áreas e pro�ssionais de TI.

Os alunos terão ainda a oportunidade de desenvolver projetos personalizados, sob supervisão de experts na área, como forma de aplicação imediata dos conhecimentos.

Construindo uma marketplace em equipe (tipo Airbnb)

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 �uxo 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, geocodi�cação e mapas• Trabalhos em segundo plano com Sidekiq• Upload de imagem com Cloudinary• Implementação contínua no Heroku

Projetos Finais

Os projetos �nais 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

MODULO 2 - ENAP

Objetivos de aprendizagem

Promover capacidades e habilidades para que os alunos estejam aptos a aplicar em seu ambiente de trabalho depois do curso

Aprendizados sobre análise de dados

O objetivo deste módulo é capacitar os alunos a organizar, integrar e analisar seus próprios conjuntos de dados. A administração pública (federal, principalmente) já tem muitos dados em formato digital e poucas pessoas habilitadas para organizar, limpar, integrar e analisar esses dados. Esta competência já se tornou central e suprir essa lacuna pode trazer mais celeridade e e�ciência para administração pública.

Ao �nal do curso, o aluno 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.

Aprendizados sobre machine learning

O objetivo desta parte do curso é ensinar o aluno a resolver problemas reais a partir de técnicas de aprendizado de máquina. O domínio destas técnicas expande o rol de problemas que podem ser adequadamente resolvidos pelas tecnologias da informação.

Ao �nal do curso, o aluno será capaz de identi�car 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.

Conteúdo Programático

Análise de dados

• Introdução a linguagem de programação python.

• Introdução ao Pandas (Python):o Estruturas de dados do Pandas.o Importação, exportação, integração, manipulação e limpeza de dados.o Filtro e Agregação de dados.o Carga e coleta de dados (CSV, API, Web Scraping, SQL).o Visualização de dados em Python.

• Conceitos de Estatística Descritiva e Probabilidade.

• Análise de dados em forma de grá�cos.

• Experimentos.

Machine Learning

• Diferenças entre programação e aprendizado de máquina (ML): O desa�o de prever resultados de um fenômeno sem um modelo explícito de seu funcionamento.

• Categorias de machine learning (ML): Supervisionado, não supervisionado.

• Diversidade de aplicações.

• Desa�o: estimativa de preço de imóveis em função de suas características.

• Regressão linear:o Intuição, cenários de uso.o Preparação de dados para modelização.o Uso da biblioteca python scikit-learn.

• Conceitos gerais de ML, aplicados ao caso básico de regressão linear:o Particionamento dos dados em treinamento/teste/validação;o Over e under �tting;o Determinantes de desempenho: mais dados, controle de complexidade do modelo, regularização, data augmentation; otimização e gradiente descendente.

• Regressão logística: Extensão da regressão linear como primeiro classi�cador.

• Árvore de decisão:o Construção e interpretação.o Extensão para Random Forest, aplicação sistemática em tarefas de previsão.o Desa�o: prever sobreviventes do naufrágio do Titanic.

• 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.

Page 3: coding MODULO ˜ – LE WAGON BOOTCAMP · Favorecem também um diálogo mais ˜uido e capacitado com as áreas e pro˚ssionais de TI. Os alunos terão ainda a oportunidade de desenvolver

MODULO 1 – LE WAGON

Objetivos de aprendizagem

Capacidades e habilidades que os alunos estarão aptos a realizar depois do curso

Aprendizados sobre programação

Em 9 semanas, os estudantes do ENAP serão capazes de:

• Entender os conceitos fundamentais da programação orientada a objeto;

• Estruturar seu software seguindo padrões de design como MVC;

• Integrar um 3° serviço usando API ou coletar dados HTML;

• Desenhar uma base de dados relacional e construir requisições com SQL;

• Construir sua UI (User Interface/Interface de Usuário) seguindo framework de Atomic Design;

• Programar um biblioteca de CSS usando técnicas recentes como �exbox ou CSS grid;

• Aprender ES6 (última versão do Javascript) como uma segunda linguagem de programação;

• Adotar o work�ow técnico correto: desenhar sua wireframe & mockup, testar seu UX com um protótipo, dividir suas user stories entre toda sua equipe e colaborar com a branch e pull requests usando Git e Github;

• Descobrir TDD (Test Driven Development/Desenvolvimento Orientado a Testes) e aprender como cobrir o código de suas aplicações com testes unitários.

Aprendizados sobre produto digital

Os alunos também irão dominar todas as habilidades necessárias para criar produtos digitais. Para nossos alunos, ser um ótimo desenvolvedor não signi�ca apenas escrever um bom código, mas também é importante dominar todas as habilidades necessárias para construir um produto tecnológico:

• Habilidades de engenharia para desenhar sua base de dados e seu software;

• Habilidades de UX Design para construir features que seus usuários querem realmente;

• Habilidades de UI Design para construir interfaces intuitivas;

• Habilidades de Design Grá�co para desenhar um produto bonito;

• Habilidades Analíticas para observar o comportamento dos seus usuários;

• Habilidades de colaboração para trabalhar em uma equipe técnica com o work�ow correto;

Conteúdo Programático

Prepwork

O curso é intenso e abrange muitos tópicos de programação. Isso pode ser assustador se você for novo na área, mas lembre-se: o curso também pode ser feito por iniciantes em tecnologia. Para garantir que todos entrem com um nível parecido, os alunos devem concluir todo o Prepwork antes do primeiro dia do curso. O Prepwork leva entre 30 e 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 - �uxo de trabalho técnico

Setup

Instale ferramentas pro�ssionais de programadores que irão prepará-lo para as próximas semanas:• Noções básicas sobre Command Line• Crie, atualize e exclua arquivos e pastas pela Command Line• Navegue em um sistema de arquivos• Instale o Ruby e uma ferramenta para Gerenciamento de Versões• Principais pacotes para programadores• Controle as versões com o git• Con�rme e envie ao Github

Programação básica

Programação básica: Escreva algoritmos manipulando variáveis, loops, condições e estruturas de dados como Array e Hash. Analise e armazene 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

Arquitetura de software

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)

Base de Dados & ORM

Os softwares precisam armazenar informações em um banco de dados. 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

Construindo interfaces web

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 �exbox e CSS grid• Consultas de mídia CSS para Design Adaptativo• Princípios básicos do Bootstrap e Sistema de Grid Responsivo

ES6, a última versão do JavaScript

Aprenda ES6 - sua segunda linguagem de programação após o Ruby - 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

Juntando tudo com Rails

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

"Um Bootcamp é um programa de treinamento técnico intensivo voltado para o ensino de habilidades, por meio de aulas teóricas e práticas, utilizando-se de metodologias aplicadas e colaborativas." Os bootcamps combinam uma dose certa de pressão e motivação num ambiente de imersão (várias horas por dia durante vários dias seguidos) em atividades práticas. As atividades práticas são precedidas por apresentação teórica e sintética sobre os principais conceitos envolvidos. Os alunos são estimulados a resolverem pequenos problemas individualmente, consultando colegas ou instrutores presentes. O trabalho colaborativo é estimulado em cursos do tipo bootcamps."

A escolha de realizar um curso intensivo em formato de Bootcamp busca atender à exigência por novos modelos de ensino e aprendizagem, com metodologias mais ágeis e focado em desenvolver habilidades especí�cas. Esse formato de curso aplicado ao ensino de programação permite ao aluno a vivência de uma experiência de aprendizagem intensa e focada, priorizando a aplicação prática dos conhecimentos, em atividades monitoradas por professores e/ou mentores especializados.

O Coding Bootcamp ENAP é uma experiência imersiva de capacitação voltada para o desenvolvimento de habilidades na área de programação, desenvolvimento de soluções digitais e análise de dados, onde servidores públicos terão a oportunidade de aprender conceitos básicos e desenvolver soluções digitais para problemas do dia-a-dia. Esse projeto é um investimento da Escola na alavancagem do potencial criativo dos servidores públicos, acreditando que o aprendizado dessas linguagens possibilita o desenvolvimento de novas competências na resolução de problemas complexos, em perspectiva colaborativa e horizontal. Trata-se de iniciativa inovadora da Enap que visa ao desenvolvimento de competências para melhoria da gestão e da prestação de serviços públicos, em consonância com os desa�os da transformação digital no setor público.

Nesse projeto inovador, a ENAP utilizará ferramentas metodológicas testadas internacionalmente em Bootcamps de Programação (metodologia Le Wagon), com métodos dinâmicos e práticos de ensino de Desenvolvimento Web. A customização do curso em metodologia bootcamp para o serviço público buscou ofertar aos alunos a oportunidade de se usufruir da licença capacitação na aquisição e no treinamento em habilidades necessárias para o incremento da produtividade e promoção do letramento digital na Administração Pública. Para tanto, acrescentou-se o segundo módulo do curso – Análise de Dados e Machine Learning, que contará com a colaboração de especialistas de alto nível para o ensino de conceitos essenciais demandados para o tratamento, processamento, análise e interpretação da informação, dos dados, das estatísticas.

Compreender a lógica de construção das soluções digitais e ser capaz de desenvolver algoritmos e programas de computador são habilidades que expandem signi�cativamente o per�l e a quantidade de problemas que um pro�ssional consegue resolver. Favorecem também um diálogo mais �uido e capacitado com as áreas e pro�ssionais de TI.

Os alunos terão ainda a oportunidade de desenvolver projetos personalizados, sob supervisão de experts na área, como forma de aplicação imediata dos conhecimentos.

Construindo uma marketplace em equipe (tipo Airbnb)

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 �uxo 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, geocodi�cação e mapas• Trabalhos em segundo plano com Sidekiq• Upload de imagem com Cloudinary• Implementação contínua no Heroku

Projetos Finais

Os projetos �nais 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

MODULO 2 - ENAP

Objetivos de aprendizagem

Promover capacidades e habilidades para que os alunos estejam aptos a aplicar em seu ambiente de trabalho depois do curso

Aprendizados sobre análise de dados

O objetivo deste módulo é capacitar os alunos a organizar, integrar e analisar seus próprios conjuntos de dados. A administração pública (federal, principalmente) já tem muitos dados em formato digital e poucas pessoas habilitadas para organizar, limpar, integrar e analisar esses dados. Esta competência já se tornou central e suprir essa lacuna pode trazer mais celeridade e e�ciência para administração pública.

Ao �nal do curso, o aluno 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.

Aprendizados sobre machine learning

O objetivo desta parte do curso é ensinar o aluno a resolver problemas reais a partir de técnicas de aprendizado de máquina. O domínio destas técnicas expande o rol de problemas que podem ser adequadamente resolvidos pelas tecnologias da informação.

Ao �nal do curso, o aluno será capaz de identi�car 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.

Conteúdo Programático

Análise de dados

• Introdução a linguagem de programação python.

• Introdução ao Pandas (Python):o Estruturas de dados do Pandas.o Importação, exportação, integração, manipulação e limpeza de dados.o Filtro e Agregação de dados.o Carga e coleta de dados (CSV, API, Web Scraping, SQL).o Visualização de dados em Python.

• Conceitos de Estatística Descritiva e Probabilidade.

• Análise de dados em forma de grá�cos.

• Experimentos.

Machine Learning

• Diferenças entre programação e aprendizado de máquina (ML): O desa�o de prever resultados de um fenômeno sem um modelo explícito de seu funcionamento.

• Categorias de machine learning (ML): Supervisionado, não supervisionado.

• Diversidade de aplicações.

• Desa�o: estimativa de preço de imóveis em função de suas características.

• Regressão linear:o Intuição, cenários de uso.o Preparação de dados para modelização.o Uso da biblioteca python scikit-learn.

• Conceitos gerais de ML, aplicados ao caso básico de regressão linear:o Particionamento dos dados em treinamento/teste/validação;o Over e under �tting;o Determinantes de desempenho: mais dados, controle de complexidade do modelo, regularização, data augmentation; otimização e gradiente descendente.

• Regressão logística: Extensão da regressão linear como primeiro classi�cador.

• Árvore de decisão:o Construção e interpretação.o Extensão para Random Forest, aplicação sistemática em tarefas de previsão.o Desa�o: prever sobreviventes do naufrágio do Titanic.

• 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.

Page 4: coding MODULO ˜ – LE WAGON BOOTCAMP · Favorecem também um diálogo mais ˜uido e capacitado com as áreas e pro˚ssionais de TI. Os alunos terão ainda a oportunidade de desenvolver

MODULO 1 – LE WAGON

Objetivos de aprendizagem

Capacidades e habilidades que os alunos estarão aptos a realizar depois do curso

Aprendizados sobre programação

Em 9 semanas, os estudantes do ENAP serão capazes de:

• Entender os conceitos fundamentais da programação orientada a objeto;

• Estruturar seu software seguindo padrões de design como MVC;

• Integrar um 3° serviço usando API ou coletar dados HTML;

• Desenhar uma base de dados relacional e construir requisições com SQL;

• Construir sua UI (User Interface/Interface de Usuário) seguindo framework de Atomic Design;

• Programar um biblioteca de CSS usando técnicas recentes como �exbox ou CSS grid;

• Aprender ES6 (última versão do Javascript) como uma segunda linguagem de programação;

• Adotar o work�ow técnico correto: desenhar sua wireframe & mockup, testar seu UX com um protótipo, dividir suas user stories entre toda sua equipe e colaborar com a branch e pull requests usando Git e Github;

• Descobrir TDD (Test Driven Development/Desenvolvimento Orientado a Testes) e aprender como cobrir o código de suas aplicações com testes unitários.

Aprendizados sobre produto digital

Os alunos também irão dominar todas as habilidades necessárias para criar produtos digitais. Para nossos alunos, ser um ótimo desenvolvedor não signi�ca apenas escrever um bom código, mas também é importante dominar todas as habilidades necessárias para construir um produto tecnológico:

• Habilidades de engenharia para desenhar sua base de dados e seu software;

• Habilidades de UX Design para construir features que seus usuários querem realmente;

• Habilidades de UI Design para construir interfaces intuitivas;

• Habilidades de Design Grá�co para desenhar um produto bonito;

• Habilidades Analíticas para observar o comportamento dos seus usuários;

• Habilidades de colaboração para trabalhar em uma equipe técnica com o work�ow correto;

Conteúdo Programático

Prepwork

O curso é intenso e abrange muitos tópicos de programação. Isso pode ser assustador se você for novo na área, mas lembre-se: o curso também pode ser feito por iniciantes em tecnologia. Para garantir que todos entrem com um nível parecido, os alunos devem concluir todo o Prepwork antes do primeiro dia do curso. O Prepwork leva entre 30 e 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 - �uxo de trabalho técnico

Setup

Instale ferramentas pro�ssionais de programadores que irão prepará-lo para as próximas semanas:• Noções básicas sobre Command Line• Crie, atualize e exclua arquivos e pastas pela Command Line• Navegue em um sistema de arquivos• Instale o Ruby e uma ferramenta para Gerenciamento de Versões• Principais pacotes para programadores• Controle as versões com o git• Con�rme e envie ao Github

Programação básica

Programação básica: Escreva algoritmos manipulando variáveis, loops, condições e estruturas de dados como Array e Hash. Analise e armazene 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

Arquitetura de software

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)

Base de Dados & ORM

Os softwares precisam armazenar informações em um banco de dados. 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

Construindo interfaces web

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 �exbox e CSS grid• Consultas de mídia CSS para Design Adaptativo• Princípios básicos do Bootstrap e Sistema de Grid Responsivo

ES6, a última versão do JavaScript

Aprenda ES6 - sua segunda linguagem de programação após o Ruby - 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

Juntando tudo com Rails

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

"Um Bootcamp é um programa de treinamento técnico intensivo voltado para o ensino de habilidades, por meio de aulas teóricas e práticas, utilizando-se de metodologias aplicadas e colaborativas." Os bootcamps combinam uma dose certa de pressão e motivação num ambiente de imersão (várias horas por dia durante vários dias seguidos) em atividades práticas. As atividades práticas são precedidas por apresentação teórica e sintética sobre os principais conceitos envolvidos. Os alunos são estimulados a resolverem pequenos problemas individualmente, consultando colegas ou instrutores presentes. O trabalho colaborativo é estimulado em cursos do tipo bootcamps."

A escolha de realizar um curso intensivo em formato de Bootcamp busca atender à exigência por novos modelos de ensino e aprendizagem, com metodologias mais ágeis e focado em desenvolver habilidades especí�cas. Esse formato de curso aplicado ao ensino de programação permite ao aluno a vivência de uma experiência de aprendizagem intensa e focada, priorizando a aplicação prática dos conhecimentos, em atividades monitoradas por professores e/ou mentores especializados.

O Coding Bootcamp ENAP é uma experiência imersiva de capacitação voltada para o desenvolvimento de habilidades na área de programação, desenvolvimento de soluções digitais e análise de dados, onde servidores públicos terão a oportunidade de aprender conceitos básicos e desenvolver soluções digitais para problemas do dia-a-dia. Esse projeto é um investimento da Escola na alavancagem do potencial criativo dos servidores públicos, acreditando que o aprendizado dessas linguagens possibilita o desenvolvimento de novas competências na resolução de problemas complexos, em perspectiva colaborativa e horizontal. Trata-se de iniciativa inovadora da Enap que visa ao desenvolvimento de competências para melhoria da gestão e da prestação de serviços públicos, em consonância com os desa�os da transformação digital no setor público.

Nesse projeto inovador, a ENAP utilizará ferramentas metodológicas testadas internacionalmente em Bootcamps de Programação (metodologia Le Wagon), com métodos dinâmicos e práticos de ensino de Desenvolvimento Web. A customização do curso em metodologia bootcamp para o serviço público buscou ofertar aos alunos a oportunidade de se usufruir da licença capacitação na aquisição e no treinamento em habilidades necessárias para o incremento da produtividade e promoção do letramento digital na Administração Pública. Para tanto, acrescentou-se o segundo módulo do curso – Análise de Dados e Machine Learning, que contará com a colaboração de especialistas de alto nível para o ensino de conceitos essenciais demandados para o tratamento, processamento, análise e interpretação da informação, dos dados, das estatísticas.

Compreender a lógica de construção das soluções digitais e ser capaz de desenvolver algoritmos e programas de computador são habilidades que expandem signi�cativamente o per�l e a quantidade de problemas que um pro�ssional consegue resolver. Favorecem também um diálogo mais �uido e capacitado com as áreas e pro�ssionais de TI.

Os alunos terão ainda a oportunidade de desenvolver projetos personalizados, sob supervisão de experts na área, como forma de aplicação imediata dos conhecimentos.

Construindo uma marketplace em equipe (tipo Airbnb)

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 �uxo 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, geocodi�cação e mapas• Trabalhos em segundo plano com Sidekiq• Upload de imagem com Cloudinary• Implementação contínua no Heroku

Projetos Finais

Os projetos �nais 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

MODULO 2 - ENAP

Objetivos de aprendizagem

Promover capacidades e habilidades para que os alunos estejam aptos a aplicar em seu ambiente de trabalho depois do curso

Aprendizados sobre análise de dados

O objetivo deste módulo é capacitar os alunos a organizar, integrar e analisar seus próprios conjuntos de dados. A administração pública (federal, principalmente) já tem muitos dados em formato digital e poucas pessoas habilitadas para organizar, limpar, integrar e analisar esses dados. Esta competência já se tornou central e suprir essa lacuna pode trazer mais celeridade e e�ciência para administração pública.

Ao �nal do curso, o aluno 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.

Aprendizados sobre machine learning

O objetivo desta parte do curso é ensinar o aluno a resolver problemas reais a partir de técnicas de aprendizado de máquina. O domínio destas técnicas expande o rol de problemas que podem ser adequadamente resolvidos pelas tecnologias da informação.

Ao �nal do curso, o aluno será capaz de identi�car 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.

Conteúdo Programático

Análise de dados

• Introdução a linguagem de programação python.

• Introdução ao Pandas (Python):o Estruturas de dados do Pandas.o Importação, exportação, integração, manipulação e limpeza de dados.o Filtro e Agregação de dados.o Carga e coleta de dados (CSV, API, Web Scraping, SQL).o Visualização de dados em Python.

• Conceitos de Estatística Descritiva e Probabilidade.

• Análise de dados em forma de grá�cos.

• Experimentos.

Machine Learning

• Diferenças entre programação e aprendizado de máquina (ML): O desa�o de prever resultados de um fenômeno sem um modelo explícito de seu funcionamento.

• Categorias de machine learning (ML): Supervisionado, não supervisionado.

• Diversidade de aplicações.

• Desa�o: estimativa de preço de imóveis em função de suas características.

• Regressão linear:o Intuição, cenários de uso.o Preparação de dados para modelização.o Uso da biblioteca python scikit-learn.

• Conceitos gerais de ML, aplicados ao caso básico de regressão linear:o Particionamento dos dados em treinamento/teste/validação;o Over e under �tting;o Determinantes de desempenho: mais dados, controle de complexidade do modelo, regularização, data augmentation; otimização e gradiente descendente.

• Regressão logística: Extensão da regressão linear como primeiro classi�cador.

• Árvore de decisão:o Construção e interpretação.o Extensão para Random Forest, aplicação sistemática em tarefas de previsão.o Desa�o: prever sobreviventes do naufrágio do Titanic.

• 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.

Page 5: coding MODULO ˜ – LE WAGON BOOTCAMP · Favorecem também um diálogo mais ˜uido e capacitado com as áreas e pro˚ssionais de TI. Os alunos terão ainda a oportunidade de desenvolver

MODULO 1 – LE WAGON

Objetivos de aprendizagem

Capacidades e habilidades que os alunos estarão aptos a realizar depois do curso

Aprendizados sobre programação

Em 9 semanas, os estudantes do ENAP serão capazes de:

• Entender os conceitos fundamentais da programação orientada a objeto;

• Estruturar seu software seguindo padrões de design como MVC;

• Integrar um 3° serviço usando API ou coletar dados HTML;

• Desenhar uma base de dados relacional e construir requisições com SQL;

• Construir sua UI (User Interface/Interface de Usuário) seguindo framework de Atomic Design;

• Programar um biblioteca de CSS usando técnicas recentes como �exbox ou CSS grid;

• Aprender ES6 (última versão do Javascript) como uma segunda linguagem de programação;

• Adotar o work�ow técnico correto: desenhar sua wireframe & mockup, testar seu UX com um protótipo, dividir suas user stories entre toda sua equipe e colaborar com a branch e pull requests usando Git e Github;

• Descobrir TDD (Test Driven Development/Desenvolvimento Orientado a Testes) e aprender como cobrir o código de suas aplicações com testes unitários.

Aprendizados sobre produto digital

Os alunos também irão dominar todas as habilidades necessárias para criar produtos digitais. Para nossos alunos, ser um ótimo desenvolvedor não signi�ca apenas escrever um bom código, mas também é importante dominar todas as habilidades necessárias para construir um produto tecnológico:

• Habilidades de engenharia para desenhar sua base de dados e seu software;

• Habilidades de UX Design para construir features que seus usuários querem realmente;

• Habilidades de UI Design para construir interfaces intuitivas;

• Habilidades de Design Grá�co para desenhar um produto bonito;

• Habilidades Analíticas para observar o comportamento dos seus usuários;

• Habilidades de colaboração para trabalhar em uma equipe técnica com o work�ow correto;

Conteúdo Programático

Prepwork

O curso é intenso e abrange muitos tópicos de programação. Isso pode ser assustador se você for novo na área, mas lembre-se: o curso também pode ser feito por iniciantes em tecnologia. Para garantir que todos entrem com um nível parecido, os alunos devem concluir todo o Prepwork antes do primeiro dia do curso. O Prepwork leva entre 30 e 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 - �uxo de trabalho técnico

Setup

Instale ferramentas pro�ssionais de programadores que irão prepará-lo para as próximas semanas:• Noções básicas sobre Command Line• Crie, atualize e exclua arquivos e pastas pela Command Line• Navegue em um sistema de arquivos• Instale o Ruby e uma ferramenta para Gerenciamento de Versões• Principais pacotes para programadores• Controle as versões com o git• Con�rme e envie ao Github

Programação básica

Programação básica: Escreva algoritmos manipulando variáveis, loops, condições e estruturas de dados como Array e Hash. Analise e armazene 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

Arquitetura de software

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)

Base de Dados & ORM

Os softwares precisam armazenar informações em um banco de dados. 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

Construindo interfaces web

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 �exbox e CSS grid• Consultas de mídia CSS para Design Adaptativo• Princípios básicos do Bootstrap e Sistema de Grid Responsivo

ES6, a última versão do JavaScript

Aprenda ES6 - sua segunda linguagem de programação após o Ruby - 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

Juntando tudo com Rails

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

"Um Bootcamp é um programa de treinamento técnico intensivo voltado para o ensino de habilidades, por meio de aulas teóricas e práticas, utilizando-se de metodologias aplicadas e colaborativas." Os bootcamps combinam uma dose certa de pressão e motivação num ambiente de imersão (várias horas por dia durante vários dias seguidos) em atividades práticas. As atividades práticas são precedidas por apresentação teórica e sintética sobre os principais conceitos envolvidos. Os alunos são estimulados a resolverem pequenos problemas individualmente, consultando colegas ou instrutores presentes. O trabalho colaborativo é estimulado em cursos do tipo bootcamps."

A escolha de realizar um curso intensivo em formato de Bootcamp busca atender à exigência por novos modelos de ensino e aprendizagem, com metodologias mais ágeis e focado em desenvolver habilidades especí�cas. Esse formato de curso aplicado ao ensino de programação permite ao aluno a vivência de uma experiência de aprendizagem intensa e focada, priorizando a aplicação prática dos conhecimentos, em atividades monitoradas por professores e/ou mentores especializados.

O Coding Bootcamp ENAP é uma experiência imersiva de capacitação voltada para o desenvolvimento de habilidades na área de programação, desenvolvimento de soluções digitais e análise de dados, onde servidores públicos terão a oportunidade de aprender conceitos básicos e desenvolver soluções digitais para problemas do dia-a-dia. Esse projeto é um investimento da Escola na alavancagem do potencial criativo dos servidores públicos, acreditando que o aprendizado dessas linguagens possibilita o desenvolvimento de novas competências na resolução de problemas complexos, em perspectiva colaborativa e horizontal. Trata-se de iniciativa inovadora da Enap que visa ao desenvolvimento de competências para melhoria da gestão e da prestação de serviços públicos, em consonância com os desa�os da transformação digital no setor público.

Nesse projeto inovador, a ENAP utilizará ferramentas metodológicas testadas internacionalmente em Bootcamps de Programação (metodologia Le Wagon), com métodos dinâmicos e práticos de ensino de Desenvolvimento Web. A customização do curso em metodologia bootcamp para o serviço público buscou ofertar aos alunos a oportunidade de se usufruir da licença capacitação na aquisição e no treinamento em habilidades necessárias para o incremento da produtividade e promoção do letramento digital na Administração Pública. Para tanto, acrescentou-se o segundo módulo do curso – Análise de Dados e Machine Learning, que contará com a colaboração de especialistas de alto nível para o ensino de conceitos essenciais demandados para o tratamento, processamento, análise e interpretação da informação, dos dados, das estatísticas.

Compreender a lógica de construção das soluções digitais e ser capaz de desenvolver algoritmos e programas de computador são habilidades que expandem signi�cativamente o per�l e a quantidade de problemas que um pro�ssional consegue resolver. Favorecem também um diálogo mais �uido e capacitado com as áreas e pro�ssionais de TI.

Os alunos terão ainda a oportunidade de desenvolver projetos personalizados, sob supervisão de experts na área, como forma de aplicação imediata dos conhecimentos.

Construindo uma marketplace em equipe (tipo Airbnb)

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 �uxo 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, geocodi�cação e mapas• Trabalhos em segundo plano com Sidekiq• Upload de imagem com Cloudinary• Implementação contínua no Heroku

Projetos Finais

Os projetos �nais 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

MODULO 2 - ENAP

Objetivos de aprendizagem

Promover capacidades e habilidades para que os alunos estejam aptos a aplicar em seu ambiente de trabalho depois do curso

Aprendizados sobre análise de dados

O objetivo deste módulo é capacitar os alunos a organizar, integrar e analisar seus próprios conjuntos de dados. A administração pública (federal, principalmente) já tem muitos dados em formato digital e poucas pessoas habilitadas para organizar, limpar, integrar e analisar esses dados. Esta competência já se tornou central e suprir essa lacuna pode trazer mais celeridade e e�ciência para administração pública.

Ao �nal do curso, o aluno 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.

Aprendizados sobre machine learning

O objetivo desta parte do curso é ensinar o aluno a resolver problemas reais a partir de técnicas de aprendizado de máquina. O domínio destas técnicas expande o rol de problemas que podem ser adequadamente resolvidos pelas tecnologias da informação.

Ao �nal do curso, o aluno será capaz de identi�car 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.

Conteúdo Programático

Análise de dados

• Introdução a linguagem de programação python.

• Introdução ao Pandas (Python):o Estruturas de dados do Pandas.o Importação, exportação, integração, manipulação e limpeza de dados.o Filtro e Agregação de dados.o Carga e coleta de dados (CSV, API, Web Scraping, SQL).o Visualização de dados em Python.

• Conceitos de Estatística Descritiva e Probabilidade.

• Análise de dados em forma de grá�cos.

• Experimentos.

Machine Learning

• Diferenças entre programação e aprendizado de máquina (ML): O desa�o de prever resultados de um fenômeno sem um modelo explícito de seu funcionamento.

• Categorias de machine learning (ML): Supervisionado, não supervisionado.

• Diversidade de aplicações.

• Desa�o: estimativa de preço de imóveis em função de suas características.

• Regressão linear:o Intuição, cenários de uso.o Preparação de dados para modelização.o Uso da biblioteca python scikit-learn.

• Conceitos gerais de ML, aplicados ao caso básico de regressão linear:o Particionamento dos dados em treinamento/teste/validação;o Over e under �tting;o Determinantes de desempenho: mais dados, controle de complexidade do modelo, regularização, data augmentation; otimização e gradiente descendente.

• Regressão logística: Extensão da regressão linear como primeiro classi�cador.

• Árvore de decisão:o Construção e interpretação.o Extensão para Random Forest, aplicação sistemática em tarefas de previsão.o Desa�o: prever sobreviventes do naufrágio do Titanic.

• 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.

Page 6: coding MODULO ˜ – LE WAGON BOOTCAMP · Favorecem também um diálogo mais ˜uido e capacitado com as áreas e pro˚ssionais de TI. Os alunos terão ainda a oportunidade de desenvolver

MODULO 1 – LE WAGON

Objetivos de aprendizagem

Capacidades e habilidades que os alunos estarão aptos a realizar depois do curso

Aprendizados sobre programação

Em 9 semanas, os estudantes do ENAP serão capazes de:

• Entender os conceitos fundamentais da programação orientada a objeto;

• Estruturar seu software seguindo padrões de design como MVC;

• Integrar um 3° serviço usando API ou coletar dados HTML;

• Desenhar uma base de dados relacional e construir requisições com SQL;

• Construir sua UI (User Interface/Interface de Usuário) seguindo framework de Atomic Design;

• Programar um biblioteca de CSS usando técnicas recentes como �exbox ou CSS grid;

• Aprender ES6 (última versão do Javascript) como uma segunda linguagem de programação;

• Adotar o work�ow técnico correto: desenhar sua wireframe & mockup, testar seu UX com um protótipo, dividir suas user stories entre toda sua equipe e colaborar com a branch e pull requests usando Git e Github;

• Descobrir TDD (Test Driven Development/Desenvolvimento Orientado a Testes) e aprender como cobrir o código de suas aplicações com testes unitários.

Aprendizados sobre produto digital

Os alunos também irão dominar todas as habilidades necessárias para criar produtos digitais. Para nossos alunos, ser um ótimo desenvolvedor não signi�ca apenas escrever um bom código, mas também é importante dominar todas as habilidades necessárias para construir um produto tecnológico:

• Habilidades de engenharia para desenhar sua base de dados e seu software;

• Habilidades de UX Design para construir features que seus usuários querem realmente;

• Habilidades de UI Design para construir interfaces intuitivas;

• Habilidades de Design Grá�co para desenhar um produto bonito;

• Habilidades Analíticas para observar o comportamento dos seus usuários;

• Habilidades de colaboração para trabalhar em uma equipe técnica com o work�ow correto;

Conteúdo Programático

Prepwork

O curso é intenso e abrange muitos tópicos de programação. Isso pode ser assustador se você for novo na área, mas lembre-se: o curso também pode ser feito por iniciantes em tecnologia. Para garantir que todos entrem com um nível parecido, os alunos devem concluir todo o Prepwork antes do primeiro dia do curso. O Prepwork leva entre 30 e 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 - �uxo de trabalho técnico

Setup

Instale ferramentas pro�ssionais de programadores que irão prepará-lo para as próximas semanas:• Noções básicas sobre Command Line• Crie, atualize e exclua arquivos e pastas pela Command Line• Navegue em um sistema de arquivos• Instale o Ruby e uma ferramenta para Gerenciamento de Versões• Principais pacotes para programadores• Controle as versões com o git• Con�rme e envie ao Github

Programação básica

Programação básica: Escreva algoritmos manipulando variáveis, loops, condições e estruturas de dados como Array e Hash. Analise e armazene 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

Arquitetura de software

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)

Base de Dados & ORM

Os softwares precisam armazenar informações em um banco de dados. 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

Construindo interfaces web

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 �exbox e CSS grid• Consultas de mídia CSS para Design Adaptativo• Princípios básicos do Bootstrap e Sistema de Grid Responsivo

ES6, a última versão do JavaScript

Aprenda ES6 - sua segunda linguagem de programação após o Ruby - 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

Juntando tudo com Rails

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

"Um Bootcamp é um programa de treinamento técnico intensivo voltado para o ensino de habilidades, por meio de aulas teóricas e práticas, utilizando-se de metodologias aplicadas e colaborativas." Os bootcamps combinam uma dose certa de pressão e motivação num ambiente de imersão (várias horas por dia durante vários dias seguidos) em atividades práticas. As atividades práticas são precedidas por apresentação teórica e sintética sobre os principais conceitos envolvidos. Os alunos são estimulados a resolverem pequenos problemas individualmente, consultando colegas ou instrutores presentes. O trabalho colaborativo é estimulado em cursos do tipo bootcamps."

A escolha de realizar um curso intensivo em formato de Bootcamp busca atender à exigência por novos modelos de ensino e aprendizagem, com metodologias mais ágeis e focado em desenvolver habilidades especí�cas. Esse formato de curso aplicado ao ensino de programação permite ao aluno a vivência de uma experiência de aprendizagem intensa e focada, priorizando a aplicação prática dos conhecimentos, em atividades monitoradas por professores e/ou mentores especializados.

O Coding Bootcamp ENAP é uma experiência imersiva de capacitação voltada para o desenvolvimento de habilidades na área de programação, desenvolvimento de soluções digitais e análise de dados, onde servidores públicos terão a oportunidade de aprender conceitos básicos e desenvolver soluções digitais para problemas do dia-a-dia. Esse projeto é um investimento da Escola na alavancagem do potencial criativo dos servidores públicos, acreditando que o aprendizado dessas linguagens possibilita o desenvolvimento de novas competências na resolução de problemas complexos, em perspectiva colaborativa e horizontal. Trata-se de iniciativa inovadora da Enap que visa ao desenvolvimento de competências para melhoria da gestão e da prestação de serviços públicos, em consonância com os desa�os da transformação digital no setor público.

Nesse projeto inovador, a ENAP utilizará ferramentas metodológicas testadas internacionalmente em Bootcamps de Programação (metodologia Le Wagon), com métodos dinâmicos e práticos de ensino de Desenvolvimento Web. A customização do curso em metodologia bootcamp para o serviço público buscou ofertar aos alunos a oportunidade de se usufruir da licença capacitação na aquisição e no treinamento em habilidades necessárias para o incremento da produtividade e promoção do letramento digital na Administração Pública. Para tanto, acrescentou-se o segundo módulo do curso – Análise de Dados e Machine Learning, que contará com a colaboração de especialistas de alto nível para o ensino de conceitos essenciais demandados para o tratamento, processamento, análise e interpretação da informação, dos dados, das estatísticas.

Compreender a lógica de construção das soluções digitais e ser capaz de desenvolver algoritmos e programas de computador são habilidades que expandem signi�cativamente o per�l e a quantidade de problemas que um pro�ssional consegue resolver. Favorecem também um diálogo mais �uido e capacitado com as áreas e pro�ssionais de TI.

Os alunos terão ainda a oportunidade de desenvolver projetos personalizados, sob supervisão de experts na área, como forma de aplicação imediata dos conhecimentos.

Construindo uma marketplace em equipe (tipo Airbnb)

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 �uxo 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, geocodi�cação e mapas• Trabalhos em segundo plano com Sidekiq• Upload de imagem com Cloudinary• Implementação contínua no Heroku

Projetos Finais

Os projetos �nais 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

MODULO 2 - ENAP

Objetivos de aprendizagem

Promover capacidades e habilidades para que os alunos estejam aptos a aplicar em seu ambiente de trabalho depois do curso

Aprendizados sobre análise de dados

O objetivo deste módulo é capacitar os alunos a organizar, integrar e analisar seus próprios conjuntos de dados. A administração pública (federal, principalmente) já tem muitos dados em formato digital e poucas pessoas habilitadas para organizar, limpar, integrar e analisar esses dados. Esta competência já se tornou central e suprir essa lacuna pode trazer mais celeridade e e�ciência para administração pública.

Ao �nal do curso, o aluno 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.

Aprendizados sobre machine learning

O objetivo desta parte do curso é ensinar o aluno a resolver problemas reais a partir de técnicas de aprendizado de máquina. O domínio destas técnicas expande o rol de problemas que podem ser adequadamente resolvidos pelas tecnologias da informação.

Ao �nal do curso, o aluno será capaz de identi�car 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.

Conteúdo Programático

Análise de dados

• Introdução a linguagem de programação python.

• Introdução ao Pandas (Python):o Estruturas de dados do Pandas.o Importação, exportação, integração, manipulação e limpeza de dados.o Filtro e Agregação de dados.o Carga e coleta de dados (CSV, API, Web Scraping, SQL).o Visualização de dados em Python.

• Conceitos de Estatística Descritiva e Probabilidade.

• Análise de dados em forma de grá�cos.

• Experimentos.

Machine Learning

• Diferenças entre programação e aprendizado de máquina (ML): O desa�o de prever resultados de um fenômeno sem um modelo explícito de seu funcionamento.

• Categorias de machine learning (ML): Supervisionado, não supervisionado.

• Diversidade de aplicações.

• Desa�o: estimativa de preço de imóveis em função de suas características.

• Regressão linear:o Intuição, cenários de uso.o Preparação de dados para modelização.o Uso da biblioteca python scikit-learn.

• Conceitos gerais de ML, aplicados ao caso básico de regressão linear:o Particionamento dos dados em treinamento/teste/validação;o Over e under �tting;o Determinantes de desempenho: mais dados, controle de complexidade do modelo, regularização, data augmentation; otimização e gradiente descendente.

• Regressão logística: Extensão da regressão linear como primeiro classi�cador.

• Árvore de decisão:o Construção e interpretação.o Extensão para Random Forest, aplicação sistemática em tarefas de previsão.o Desa�o: prever sobreviventes do naufrágio do Titanic.

• 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.

Page 7: coding MODULO ˜ – LE WAGON BOOTCAMP · Favorecem também um diálogo mais ˜uido e capacitado com as áreas e pro˚ssionais de TI. Os alunos terão ainda a oportunidade de desenvolver

MODULO 1 – LE WAGON

Objetivos de aprendizagem

Capacidades e habilidades que os alunos estarão aptos a realizar depois do curso

Aprendizados sobre programação

Em 9 semanas, os estudantes do ENAP serão capazes de:

• Entender os conceitos fundamentais da programação orientada a objeto;

• Estruturar seu software seguindo padrões de design como MVC;

• Integrar um 3° serviço usando API ou coletar dados HTML;

• Desenhar uma base de dados relacional e construir requisições com SQL;

• Construir sua UI (User Interface/Interface de Usuário) seguindo framework de Atomic Design;

• Programar um biblioteca de CSS usando técnicas recentes como �exbox ou CSS grid;

• Aprender ES6 (última versão do Javascript) como uma segunda linguagem de programação;

• Adotar o work�ow técnico correto: desenhar sua wireframe & mockup, testar seu UX com um protótipo, dividir suas user stories entre toda sua equipe e colaborar com a branch e pull requests usando Git e Github;

• Descobrir TDD (Test Driven Development/Desenvolvimento Orientado a Testes) e aprender como cobrir o código de suas aplicações com testes unitários.

Aprendizados sobre produto digital

Os alunos também irão dominar todas as habilidades necessárias para criar produtos digitais. Para nossos alunos, ser um ótimo desenvolvedor não signi�ca apenas escrever um bom código, mas também é importante dominar todas as habilidades necessárias para construir um produto tecnológico:

• Habilidades de engenharia para desenhar sua base de dados e seu software;

• Habilidades de UX Design para construir features que seus usuários querem realmente;

• Habilidades de UI Design para construir interfaces intuitivas;

• Habilidades de Design Grá�co para desenhar um produto bonito;

• Habilidades Analíticas para observar o comportamento dos seus usuários;

• Habilidades de colaboração para trabalhar em uma equipe técnica com o work�ow correto;

Conteúdo Programático

Prepwork

O curso é intenso e abrange muitos tópicos de programação. Isso pode ser assustador se você for novo na área, mas lembre-se: o curso também pode ser feito por iniciantes em tecnologia. Para garantir que todos entrem com um nível parecido, os alunos devem concluir todo o Prepwork antes do primeiro dia do curso. O Prepwork leva entre 30 e 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 - �uxo de trabalho técnico

Setup

Instale ferramentas pro�ssionais de programadores que irão prepará-lo para as próximas semanas:• Noções básicas sobre Command Line• Crie, atualize e exclua arquivos e pastas pela Command Line• Navegue em um sistema de arquivos• Instale o Ruby e uma ferramenta para Gerenciamento de Versões• Principais pacotes para programadores• Controle as versões com o git• Con�rme e envie ao Github

Programação básica

Programação básica: Escreva algoritmos manipulando variáveis, loops, condições e estruturas de dados como Array e Hash. Analise e armazene 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

Arquitetura de software

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)

Base de Dados & ORM

Os softwares precisam armazenar informações em um banco de dados. 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

Construindo interfaces web

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 �exbox e CSS grid• Consultas de mídia CSS para Design Adaptativo• Princípios básicos do Bootstrap e Sistema de Grid Responsivo

ES6, a última versão do JavaScript

Aprenda ES6 - sua segunda linguagem de programação após o Ruby - 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

Juntando tudo com Rails

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

REALIZAÇÃO

PARCEIROS

"Um Bootcamp é um programa de treinamento técnico intensivo voltado para o ensino de habilidades, por meio de aulas teóricas e práticas, utilizando-se de metodologias aplicadas e colaborativas." Os bootcamps combinam uma dose certa de pressão e motivação num ambiente de imersão (várias horas por dia durante vários dias seguidos) em atividades práticas. As atividades práticas são precedidas por apresentação teórica e sintética sobre os principais conceitos envolvidos. Os alunos são estimulados a resolverem pequenos problemas individualmente, consultando colegas ou instrutores presentes. O trabalho colaborativo é estimulado em cursos do tipo bootcamps."

A escolha de realizar um curso intensivo em formato de Bootcamp busca atender à exigência por novos modelos de ensino e aprendizagem, com metodologias mais ágeis e focado em desenvolver habilidades especí�cas. Esse formato de curso aplicado ao ensino de programação permite ao aluno a vivência de uma experiência de aprendizagem intensa e focada, priorizando a aplicação prática dos conhecimentos, em atividades monitoradas por professores e/ou mentores especializados.

O Coding Bootcamp ENAP é uma experiência imersiva de capacitação voltada para o desenvolvimento de habilidades na área de programação, desenvolvimento de soluções digitais e análise de dados, onde servidores públicos terão a oportunidade de aprender conceitos básicos e desenvolver soluções digitais para problemas do dia-a-dia. Esse projeto é um investimento da Escola na alavancagem do potencial criativo dos servidores públicos, acreditando que o aprendizado dessas linguagens possibilita o desenvolvimento de novas competências na resolução de problemas complexos, em perspectiva colaborativa e horizontal. Trata-se de iniciativa inovadora da Enap que visa ao desenvolvimento de competências para melhoria da gestão e da prestação de serviços públicos, em consonância com os desa�os da transformação digital no setor público.

Nesse projeto inovador, a ENAP utilizará ferramentas metodológicas testadas internacionalmente em Bootcamps de Programação (metodologia Le Wagon), com métodos dinâmicos e práticos de ensino de Desenvolvimento Web. A customização do curso em metodologia bootcamp para o serviço público buscou ofertar aos alunos a oportunidade de se usufruir da licença capacitação na aquisição e no treinamento em habilidades necessárias para o incremento da produtividade e promoção do letramento digital na Administração Pública. Para tanto, acrescentou-se o segundo módulo do curso – Análise de Dados e Machine Learning, que contará com a colaboração de especialistas de alto nível para o ensino de conceitos essenciais demandados para o tratamento, processamento, análise e interpretação da informação, dos dados, das estatísticas.

Compreender a lógica de construção das soluções digitais e ser capaz de desenvolver algoritmos e programas de computador são habilidades que expandem signi�cativamente o per�l e a quantidade de problemas que um pro�ssional consegue resolver. Favorecem também um diálogo mais �uido e capacitado com as áreas e pro�ssionais de TI.

Os alunos terão ainda a oportunidade de desenvolver projetos personalizados, sob supervisão de experts na área, como forma de aplicação imediata dos conhecimentos.

Construindo uma marketplace em equipe (tipo Airbnb)

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 �uxo 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, geocodi�cação e mapas• Trabalhos em segundo plano com Sidekiq• Upload de imagem com Cloudinary• Implementação contínua no Heroku

Projetos Finais

Os projetos �nais 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

MODULO 2 - ENAP

Objetivos de aprendizagem

Promover capacidades e habilidades para que os alunos estejam aptos a aplicar em seu ambiente de trabalho depois do curso

Aprendizados sobre análise de dados

O objetivo deste módulo é capacitar os alunos a organizar, integrar e analisar seus próprios conjuntos de dados. A administração pública (federal, principalmente) já tem muitos dados em formato digital e poucas pessoas habilitadas para organizar, limpar, integrar e analisar esses dados. Esta competência já se tornou central e suprir essa lacuna pode trazer mais celeridade e e�ciência para administração pública.

Ao �nal do curso, o aluno 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.

Aprendizados sobre machine learning

O objetivo desta parte do curso é ensinar o aluno a resolver problemas reais a partir de técnicas de aprendizado de máquina. O domínio destas técnicas expande o rol de problemas que podem ser adequadamente resolvidos pelas tecnologias da informação.

Ao �nal do curso, o aluno será capaz de identi�car 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.

Conteúdo Programático

Análise de dados

• Introdução a linguagem de programação python.

• Introdução ao Pandas (Python):o Estruturas de dados do Pandas.o Importação, exportação, integração, manipulação e limpeza de dados.o Filtro e Agregação de dados.o Carga e coleta de dados (CSV, API, Web Scraping, SQL).o Visualização de dados em Python.

• Conceitos de Estatística Descritiva e Probabilidade.

• Análise de dados em forma de grá�cos.

• Experimentos.

Machine Learning

• Diferenças entre programação e aprendizado de máquina (ML): O desa�o de prever resultados de um fenômeno sem um modelo explícito de seu funcionamento.

• Categorias de machine learning (ML): Supervisionado, não supervisionado.

• Diversidade de aplicações.

• Desa�o: estimativa de preço de imóveis em função de suas características.

• Regressão linear:o Intuição, cenários de uso.o Preparação de dados para modelização.o Uso da biblioteca python scikit-learn.

• Conceitos gerais de ML, aplicados ao caso básico de regressão linear:o Particionamento dos dados em treinamento/teste/validação;o Over e under �tting;o Determinantes de desempenho: mais dados, controle de complexidade do modelo, regularização, data augmentation; otimização e gradiente descendente.

• Regressão logística: Extensão da regressão linear como primeiro classi�cador.

• Árvore de decisão:o Construção e interpretação.o Extensão para Random Forest, aplicação sistemática em tarefas de previsão.o Desa�o: prever sobreviventes do naufrágio do Titanic.

• 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.