Article image

DF

Denny Filho24/09/2024 15:57
Compartilhe

ChatGPT como ferramenta auxiliar do Professor

    Um dos principais terrores de um professor são os famosos planos de aulas, principalmente numa área com TI onde as mudanças são constantes e rápidas.

    Como professor, e olha que lá se vão mais de 40 anos no ofício, nunca consegui repetir meus conteúdos por mais de 2 anos, atualmente preciso ajustar a cada semestre letivo.

    Tá, eu sei que vão começar com aquelas colocações do professor que ministra o mesmo conteúdo, e usa os mesmos exercícios a mais de 10 anos.... Infelizmente isso acontece, eu tive um professor assim. Ok, mesmo na área de TI, que é dinâmica e evolui a um ritmo assustador, isso acontece.

    Em lógica e estrutura.... Bom deixa pra lá, vamos focar nos que estão sempre buscando novidades e se atualizando.

    É para estes que a o ChatGPT vai ser uma ótima ferramenta de auxílio.

    Os planos normalmente começam com diversas pesquisas sobre o que o mercado está usando sobre o tema, linguagem, ferramenta ou metodologia que vai ser o foco da disciplina, depois vamos analisar e buscar cursos, para pegarmos ideias, sequências e tópicos. Quando é a primeira vez com a disciplina então!!!

    Já perdi a conta do número de cursos que analisei ou fiz para buscar ideias, dicas, projetos etc.

    A questão é traduzir todos os requisitos necessários num cronograma de aulas semanais, num determinado número de semanas. Que vamos ser honestos, sempre dá errado, ou colocamos coisas demais, ou de menos. No último caso é mais fácil resolver.

    Aí entra o ChatGPT, na verdade, a IA Generativa, onde o ChatGPT é mais uma das ferramentas disponíveis.

    Fiz um experimento. Peguei uma ementa de uma disciplina do curso que sou Coordenador, no IFSP, campus Caraguatatuba, do curso Técnico de Informática para Internet, a FrontEnd 2, que tem como objetivo aprofundar no uso do Javascript, que o aluno já teve um contato inicial em Lógica de Programação. E passando as informações ao ChatGPT, pedi para gerar um cronograma de estudos, com 20 dias (nossas 20 semanas de aulas) com 3 horas de estudos (nossas 4 aulas de 50 minutos), e recebi isso:

    Aqui está um cronograma de 20 dias para dominar JavaScript, focado em tópicos intermediários e avançados, já que você tem conhecimento prévio em lógica de programação e nos comandos básicos e de fluxo. Cada dia terá 3 horas de estudo, com uma combinação de teoria e prática.

    Semana 1: Domínio de Funções, Objetos e Arrays Avançados

    Dia 1: Funções Avançadas

    • Funções de ordem superior (map(), filter(), reduce()).
    • Funções puras e impuras.
    • Funções anônimas e IIFE (Immediately Invoked Function Expression).
    • Prática: Recriar métodos de arrays como filter() e map() do zero.

    Dia 2: Closures e Escopo

    • Revisão de escopo (global, local).
    • Entendimento profundo de closures e como usá-los.
    • Prática: Criar um contador com closures que retém o valor entre chamadas.

    Dia 3: Manipulação de Objetos

    • Criação e manipulação de objetos.
    • Object methods: Object.assign(), Object.keys(), Object.values(), Object.entries().
    • Prática: Criar um sistema simples de cadastro de usuários com manipulação de dados em objetos.

    Dia 4: Desestruturação e Operador Spread

    • Desestruturação de arrays e objetos.
    • Uso do operador spread (...).
    • Prática: Manipular dados complexos (como objetos dentro de arrays) utilizando desestruturação e spread.

    Dia 5: Prototypes e Herança em JavaScript

    • Conceito de prototype e herança prototípica.
    • Criando e estendendo objetos com prototypes.
    • Prática: Implementar um sistema de herança simples (ex: herança de classes de animais).

    Dia 6: Classes no JavaScript

    • Introdução à sintaxe de classes no ES6.
    • Diferença entre classes e funções construtoras.
    • Prática: Reescrever o sistema de herança anterior utilizando classes.

    Dia 7: Revisão da Semana 1

    • Revisão dos conceitos de funções avançadas, objetos, prototypes e classes.
    • Projeto prático: Criar uma aplicação simples que simula um sistema de gerenciamento de pedidos com uso de classes e objetos.

    Semana 2: Programação Assíncrona e Manipulação do DOM

    Dia 8: Introdução à Programação Assíncrona

    • O que é programação assíncrona: callbacks, promises, e async/await.
    • Promises: then(), catch(), e finally().
    • Prática: Criar uma simulação de uma chamada de API usando setTimeout() e promises.

    Dia 9: Async/Await e Operações Assíncronas

    • Uso de async/await para simplificar código assíncrono.
    • Lidando com erros em async/await.
    • Prática: Reescrever o exemplo anterior usando async/await.

    Dia 10: Trabalhando com APIs (Fetch)

    • Utilizando a função fetch() para consumir APIs.
    • Métodos HTTP (GET, POST, PUT, DELETE).
    • Prática: Fazer uma requisição a uma API pública e exibir os dados no console.

    Dia 11: Manipulação do DOM

    • Seleção e manipulação de elementos HTML com JavaScript.
    • Métodos do DOM: getElementById(), querySelector(), innerHTML, textContent.
    • Prática: Criar uma página onde o conteúdo muda ao clicar em um botão.

    Dia 12: Eventos no DOM

    • O que são eventos e como funcionam.
    • Manipulação de eventos: addEventListener(), removeEventListener().
    • Prática: Criar uma galeria de imagens que troca a imagem ao passar o mouse.

    Dia 13: Manipulação Avançada do DOM

    • Criando e removendo elementos dinamicamente.
    • Uso de createElement(), appendChild(), removeChild().
    • Prática: Criar uma lista de tarefas (to-do list) que permite adicionar e remover itens dinamicamente.

    Dia 14: Revisão da Semana 2

    • Revisão dos conceitos de programação assíncrona e manipulação do DOM.
    • Projeto prático: Criar uma aplicação de busca de filmes consumindo uma API pública e exibindo os resultados no DOM.

    Semana 3: Desenvolvimento Avançado e Ecossistema JavaScript

    Dia 15: Módulos no JavaScript

    • Como modularizar o código com import e export.
    • Entendendo a diferença entre módulos comuns e ECMAScript Modules.
    • Prática: Dividir o código de uma aplicação simples em múltiplos arquivos usando módulos.

    Dia 16: Node.js - Introdução

    • O que é Node.js e como configurar um ambiente de desenvolvimento.
    • Criar um servidor básico com Node.js.
    • Prática: Criar uma aplicação simples em Node.js que serve uma página HTML.

    Dia 17: Ferramentas e Pacotes no Ecossistema JavaScript

    • Gerenciadores de pacotes: npm e yarn.
    • Instalando e utilizando pacotes populares.
    • Prática: Usar um pacote npm (como axios ou moment) em um projeto JavaScript.

    Dia 18: Testes em JavaScript

    • Introdução a testes: testes unitários, testes de integração.
    • Ferramentas populares de teste: Jest, Mocha.
    • Prática: Escrever testes simples para funções JavaScript usando Jest.

    Dia 19: Boas Práticas e Clean Code

    • Boas práticas de escrita de código: DRY, KISS, YAGNI.
    • Clean code em JavaScript: nomenclatura, modularização, evitar repetições.
    • Prática: Refatorar um código anterior para seguir as boas práticas.

    Dia 20: Revisão e Projeto Final

    • Revisão geral dos conceitos de programação assíncrona, manipulação do DOM, módulos e Node.js.
    • Projeto final: Criar uma aplicação completa, usando Node.js no backend e JavaScript no frontend, que consome uma API e manipula o DOM de forma dinâmica.

    Recursos e Dicas

    • Documentação: Consulte a documentação oficial do JavaScript e do Node.js regularmente.
    • Comunidades: Participe de comunidades de desenvolvedores JavaScript para discutir dúvidas e compartilhar conhecimentos.
    • Prática Contínua: Continue praticando após o cronograma, criando projetos pequenos e reais para solidificar o aprendizado.

    Uaaauuu

    Cinco minutos, mentira, num um minuto, e eu consegui uma proposta de cronograma, atual e separado por aulas. Perfeito, não, mas me poupou, ou pouparia, pois não vou ministrar a disciplina, de muita pesquisa e buscas.

    Já tenho um bom ponto de partida. E mais não vou cair na rotina que já cansei de ver, com aluno e depois como professor...cada nova linguagem vemos tudo de novo!!

    O que é decisão, o que é repetição....sério!!!

    Já não vi isso em lógica ou em outra linguagem?! Isso quando não temos os mesmos exercícios!

    Mas voltemos ao nosso tópico, e mundo utópico, onde todos os professores estão sempre atualizando seus conhecimentos e materiais, e os alunos querendo e buscando conhecimento.

    Alguém aqui já viveu aquele fenômeno estranho das férias, que faz os alunos esquecerem tudo?!

    Bom, deixa pra lá.

    Mas, eu não me contentando com o meu bom cronograma, pensei, será que consigo um material de apoio? Só que já fez os famosos materiais de apoio, slides de apresentação, sabe o que é isso. É com a escrita de um livro! E o pior é escutar, "fessor, vai ter apostilinha?", sim com "inha" para deixar a gente mais revoltado.

    Horas e horas....isso quando não soltam a famosa pergunta; "O senhor trabalha ou só dá aulas?", alguém aqui?

    Voltando. Peguei o primeiro tópico, do primeiro dia, e pedi, passando alguns parâmetros, ao ChatGPT para gerar um artigo, utilizei esta forma de estilo, o resultado, vejam:

    Funções de Ordem Superior em JavaScript: Um Guia para Iniciantes


    Olá, eu sou Denny Azevedo, Desenvolvedor FullStack Sênior, e hoje vou ajudar você, que está começando no mundo do desenvolvimento web. Nosso objetivo é desbravar o universo das funções de ordem superior em JavaScript, como map(), filter() e reduce(). Vamos entender o que são essas funções, como utilizá-las e como elas podem facilitar sua vida como programador.


    O Que São Funções de Ordem Superior?

    Funções de ordem superior são como superpoderes no JavaScript! Elas são funções que podem receber outras funções como argumentos ou retornar uma nova função. Em termos mais simples, são funções que trabalham com outras funções.


    1. map(): Transforme o Mundo com Facilidade

    Imagine que você tem uma lista de números e quer transformá-los, como por exemplo, dobrar cada número. A função map() é como uma mágica que aplica uma função a cada item da sua lista e cria uma nova lista com os resultados.

    Exemplo de Uso:

    const numeros = [1, 2, 3, 4, 5];
    const dobrados = numeros.map(numero => numero * 2);
    
    console.log(dobrados); // [2, 4, 6, 8, 10]
    

    Aqui, map() pega cada número da lista numeros, aplica a função que dobra o número e retorna uma nova lista com os números dobrados.


    2. filter(): Selecione Apenas o Melhor

    Se você precisa filtrar itens de uma lista com base em uma condição, a função filter() é sua amiga. Pense nela como um filtro de café: ela passa por todos os grãos (itens) e deixa apenas os que atendem aos critérios desejados.

    Exemplo de Uso:

    const idades = [15, 22, 18, 30, 25];
    const maioresDeIdade = idades.filter(idade => idade >= 18);
    
    console.log(maioresDeIdade); // [22, 18, 30, 25]
    

    Aqui, filter() seleciona apenas as idades que são 18 ou mais e cria uma nova lista com essas idades.


    3. reduce(): Reduza para um Único Valor

    Se você precisa combinar todos os itens de uma lista em um único valor, reduce() é a ferramenta ideal. Imagine que você está somando todos os números em uma lista. A função reduce() faz exatamente isso, mas pode ser usada para muitas outras operações de combinação.

    Exemplo de Uso:

    const numeros = [1, 2, 3, 4, 5];
    const soma = numeros.reduce((acumulador, numeroAtual) => acumulador + numeroAtual, 0);
    
    console.log(soma); // 15
    

    Aqui, reduce() soma todos os números na lista numeros e retorna o total, começando com um valor inicial de 0.


    Quando Usar Cada Um?

    • map() é ideal quando você quer transformar todos os itens de uma lista.
    • filter() é útil quando você precisa extrair uma sublista com base em uma condição.
    • reduce() é perfeito quando você quer combinar todos os itens da lista em um único valor.

    Conclusão

    Agora você tem uma visão geral das funções de ordem superior em JavaScript e como elas podem ser extremamente úteis para tornar seu código mais limpo e eficiente. Com map(), filter() e reduce(), você pode manipular e transformar dados de maneira poderosa e elegante.

    Continue explorando e praticando, e logo essas funções se tornarão ferramentas essenciais no seu arsenal de programação. Até a próxima, e feliz codificação!



    Onde estavam estas ferramentas a 20 anos atrás?!

    É sensacional, novamente, não preciso trabalhar do zero, tenho um boa base para trabalhar. Se você é como eu, que gosta não só de testar seus códigos de exemplo, mas como coloca-los em um contexto e aplicação efetiva, só vou ter mais material para acrescentar a este, mas o mais legal, não preciso sair da página em branco.

    Vamos ser honestos, estas novas ferramentas de IA Generativa são excelentes ferramentas de apoio, não só para o professor preparar seu plano de ensino, seu material, mas como auxiliar em aula, junto aos alunos.

    Pena que só foi aparecer uma ferramenta destas justo quando estou pendurado minhas chuteiras na área educacional.

    O professor que ainda não começou a explorar e utilizar estas ferramentas, está atrasado. E não existe este negócio de substituir, nada vai substituir a lado humano, o entendimento a empatia e o acolhimento de um verdadeiro professor (que infelizmente as vezes sinto que estão diminuindo), mas não podemos deixar de lado esta tecnologia, esta ferramenta que só vem para somar.

    Compartilhe
    Comentários (0)