Need help with guetos?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

tecnogueto
130 Stars 8 Forks 9 Commits 0 Opened issues

Description

Iniciativa open source social que visa espalhar programação para escolas públicas, ONGs, CEUs e qualquer lugar onde pudermos chegar para estimular pessoas periféricas a aprender programação.

Services available

!
?

Need anything else?

Contributors list

Guetos Educacionais

Iniciativa open source que visa espalhar programação para escolas públicas, ONGs, CEUs e qualquer lugar onde pudermos chegar para estimular pessoas em situação de vulnerabilidade social a aprender programação.

Qualquer pessoa pode implementar este projeto em qualquer lugar que achar possível.

Este documento é um modelo para ensinarmos programação em qualquer lugar.

O documento contempla: estrutura do programa Guetos Educacionais do Tecnogueto, cronograma e materiais necessários para ensino.

Se você tem vontade de ensinar programação na sua região, mas não tem ideia de como fazer isso, aqui temos tudo o que você precisa para tirar esse desejo do papel.

Sinta-se à vontade para enviar pull requests de melhorias neste documento ou abrir issues para tirar suas dúvidas.

Sumário

Missão

Ensinar desenvolvimento de software para pessoas com pouco ou nenhum acesso a educação formal para aprender programação (como cursos, livros, faculdade, eventos e afins), visando capacitá-las para o mercado de trabalho ou criar seu próprio negócio, produto, serviço.

Plus

Se às pessoas saírem com boa compreensão e influenciadas ao uso de software livre e desenvolvimento open source será um excelente plus à nossa missão.

No final do acompanhamento as pessoas saírem querendo ensinar o que aprenderam e estarem politizadas quanto a necessidade de elas se moverem a favor dos grupos sub-representados em nossa sociedade.

Se surgir alguma iniciativa social/algum projeto a partir das pessoas que participam do grupo, será um sucesso ainda maior.

Dinâmica dos encontros

Fazemos encontros presenciais, semanais, para estudar programação e/ou programar algo juntos.

Utilizamos conceitos de agilidade (manifesto ágil) e processos de desenvolvimento de software o tempo todo, para que os/as participantes tenham contato com a realidade de um dia como pessoa desenvolvedora de software.

Também utilizamos jogos e dinâmicas para estimular o trabalho em grupo, a comunicação e a união do time.

Durante o curso temos alguns agentes de transformação social: organizador(a), mentor(a), alunos(as).

Agentes

organizador(a)

Pessoa que trata de toda a parte organizacional dos encontros, como: encontrar um local para estudarmos, conseguir patrocínio (alimentação, transporte e demais custos locais) manter a comunicação ativa entre todos os participantes, desenrolar burocracias.

mentor(a)

Pessoa que irá ensinar programação para os alunos, mentorar suas carreiras e lhes guiar nos exercícios práticos.

voluntários(as)

Pessoas que irão ajudar os mentores e mentoras revisando código de exercícios práticos dos alunos e alunas.

alunos(a)

Pessoas que estão ali para aprender.

Objetivos

  • ensinar programação
  • ensinar boas práticas de desenvolvimento de software
  • ensinar a debugar código
  • ensinar a planejar soluções (pensamento analítico)
  • ensinar versionamento de código
  • ensinar sobre testes de software
  • ensinar ética em desenvolvimento de software
  • preparar as pessoas para entrarem em um emprego como desenvolvedoras de software

Todos esses tópicos devem ser ensinados durante o curso baseado no exemplo pessoal via mentoria.

Público alvo

Pessoas em situação de vulnerabilidade social

Essas pessoas não precisam ter tido contato prévio com programação.

Não é necessário conhecimento em inglês.

Se você não sabe o que é vulnerabilidade social, confira este link: wiki/vulnerabilidade-social.

Habilidades desenvolvidas

Essas são as habilidades que serão desenvolvidas durante as aulas seguindo nossa grade de estudos.

  • Lógica de programação
  • Linguagens de programação
  • Analisar código fonte de projetos (fuçar código/debug)
  • Encontrar bons recursos para continuar aprendendo
  • Criar um projeto do zero
  • Resolver problemas reais de desenvolvimento de software
  • Perder o medo de explorar/experimentar mais
  • Aprender testes de software para garantir a qualidade das suas entregas
  • Aprender a diferença entre features de linguagens e libs/frameworks

Competências desenvolvidas

Utilizar Git e GitHub, conhecer o mercado de programação, criar CRUDs, conseguir identificar erros em código fonte, se candidatar a vagas de emprego como programadores(as), criar aplicações, serviços e aplicativos e/ou serem capazes de criar seus próprios produtos.

Conteúdo programático

Introdução a linha de comando > introdução a versionamento de código e Git > introdução a sistemas operacionais > desenvolvimento server e client-side > introdução a infraestrutura e bancos de dados > qualidade de software > modularização e modelagem de sistemas > testes de software > orientação a objetos > programação funcional.

Método de ensino

  • Aulas presenciais, vídeos aulas, aulas de reforço online exercícios práticos sobre cada aula
  • Projetos práticos durante as aulas

Utilizamos o material encontrado aqui para ensinar presencialmente, mas também compartilhamos conteúdo que achamos relevante, como vídeo aulas, artigos, podcasts, etc. Caso alguém esteja passando por dificuldades em acompanhar a aula, podemos fazer reforço online ou podemos fazer aulas de revisão online para quem não conseguiu comparecer por algum motivo.

Os exercícios práticos não são obrigatórios para a conclusão do curso. A pessoa pode participar como ouvinte e ir até o final, mesmo sem executar a prática, porém ela não vai aprender a programar de fato, só aprenderá teoria. Os exercícios práticos também existem para a criação do portfólio online destas pessoas, por isso é extremamente recomendável que elas o façam.

Tempo estimado

~ 5 meses com aulas de 4/5 horas aos sábados*.

***** você pode modificar esse tempo e horários se precisar.

Recursos necessários

  • espaço presencial com computadores com um sistema operacional Linux (de preferência Linux Mint ou Ubuntu) com usuários com permissões administrativas para instalarmos nossas ferramentas e acesso a internet
  • mentores(as) que puxam o grupo e ministram as aulas
  • voluntários(as) que ajudam a revisar código e monitorar as aulas

Método de avaliação

Projeto de conclusão de curso (desenvolvimento de uma web app) ou entrega de todos os projetos de andamento de aulas.

Este projeto pode ser planejado junto aos alunos e alunas, para resolver algum problema pessoal deles ou um desafio proposto pela mentoria.

Módulos

  1. Introdução a programação
  2. Testes de software
  3. Orientação a Objetos
  4. Tecnologias server side
  5. Tecnologias client side

Cronograma

|Semana| Atividade | Prática (opcional) | Carga horária | |--|--|--|--| Semana 00 | Dinâmica de reconhecimento de ambiente; apresentação para os participantes; estimular os alunos a colocar em seu LinkedIn que estão estudando através do Tecnogueto. | Criar uma conta no GitHub. | 4 Semana 01 | Introdução ao terminal; configuração do ambiente de desenvolvimento (instalação do interpretador da linguagem de programação, editor de código e Git). | Subir um repositório de estudos sobre terminal no GitHub com as anotações em um arquivo de texto ou Markdown. | 4 Semana 02 | Introdução a programação: como funciona um programa de computador (plataformas (web, mobile, server, hardware), linguagens (alto e baixo nível)), sistemas operacionais, lógica de programação, sintaxe básica da linguagem (a estrutura de um programa), arquivos, debug, nosso primeiro programa em linha de comando (hello world). | Criar uma calculadora via terminal e subir no GitHub (calculadora simples, que só faz uma função e temos que alterar o código se quisermos fazer outra operação). | 4 Semana 03 | Introdução a programação: manipulação de valores, identificadores, tipos de dados, operadores matemáticos, operadores condicionais, operadores lógicos, laços de repetição, funções e módulos. | Criar um utilitário de linha de comando onde inserimos dados financeiros de um grupo social e ele retorna se a igualdade está boa ou ruim. Refatorar a calculadora para que cada funcionalidade dela seja uma função separada em um módulo diferente. | 10 Semana 04 | Introdução a programação: bibliotecas e frameworks. | Refatorar os utilitários de linha de comando para receberem valores via linha de comando, não sendo mais necessário reescrever código e sendo necessário manipulação de processos do sistema operacional (sys args). Criar um jogo de Jokenpo via linha de comando e subir no GitHub. | 4 Semana 05 | Testes de software: introdução a testes de software, qualidade de código, ética no desenvolvimento de software, conhecendo o utilitário de testes | Criar uma calculadora via terminal que verifica se o peso de uma criança está dentro do IMC aceitável ou se ela precisa de acompanhamento, implementar testes, subir no GitHub | 6 Semana 06 | Orientação a Objetos: introdução a programação orientada a objetos, namespaces, classes, objetos, atributos, métodos, construtores, herança, encapsulamento, abstração, polimorfismo | Criar um cadastro de animais do bairro para o controle de zoonoses utilizando orientação a objetos, testes de software e subir no GitHub. | 13 Semana 07 | Tecnologias server side: introdução a web, como funciona a internet, utilizando um framework para criar APIs. | Criar uma API que retorna nosso currículo utilizando orientação a objetos, testes de software e subir no GitHub. | 6 Semana 08 | Tecnologias server side: introdução a infraestrutura, subindo nossa API em uma hospedagem gratuita | Disponibilizar nossa API de currículo em uma hospedagem gratuita. | 4 Semana 09 | Tecnologias server side: armazenando dados (arquivos e banco de dados), CRUD | Criar um CRUD para cadastrarmos nossos alunos, listar estes alunos, atualizar os dados e deletar em um arquivo de textos (txt ou csv) utilizando orientação a objetos, testes de software e subir no GitHub. | 10 Semana 10 | Tecnologias server side: banco de dados, ORM | Criar um CRUD para cadastrarmos produtos, listar estes produtos, atualizar os dados e deletar utilizando orientação a objetos, testes de software e subir no GitHub. | 18 Semana 11 | Tecnologias client side: introdução a HTML, CSS, semântica e acessibilidade | Criar uma página em HTML para listar os lugares mais legais do nosso bairro e colocar no GitHub. O código precisa ser semântico e passar nos testes de acessibilidade | 6 Semana 12 | Tecnologias client side: JavaScript no navegador | Criar uma lâmpada com HTML e CSS e manipular ela com JavaScript. Ela deve acender e apagar. Devemos ter a lâmpada e um interruptor na tela. Devemos subir isso no GitHub. | 7 Semana 13 | Tecnologias client side: DOM e APIs do navegador, diagramação com CSS | Criar uma página HTML de homenagem a alguém que gostamos muito, com layout corretamente renderizado, código semântico e subir no GitHub. | 4 Semana 14 | Tecnologias client side: frameworks JS e CSS, SPAs | Criar uma SPA que lista nossos repositórios do GitHub, fazendo nosso portfólio bem diagramado (podendo utilizar algum framework para CSS também) e subir no GitHub. O código precisa ser bem estruturado, modular e testado. |18 Semana 15 | Tecnologias client side: infraestrutura e hospedagem | Subir nosso portfólio em uma hospedagem gratuita. | 2

Carga horária total

~120 horas.

Como implementar na minha região

Você precisa encontrar um local com os recursos necessários e se planejar para que tenha o tempo disponível (estimativa) para executar o plano de estudos.

Recomendamos que você procure pelos CEUs da sua região ou pela escola pública mais próxima para ministrar as aulas.

É importante que o espaço não seja longe para quem vai participar, nem para você e nem para os estudantes, pois isso vai reduzir a taxa de abandono do curso.

Para conseguir alunos e alunas, recomendamos o contato com ONGs ou escolas públicas.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.