Qual conteúdo você gostaria de ter aprendido no início?
Início
Olá pessoal, meu nome é Eduardo e estou no 7º período de Ciência da Computação. Recentemente, recebi uma proposta para ministrar um curso de programação em formato de extensão para alunos do ensino médio. Este curso terá duração de 1 ano, podendo ser estendido.
Minha Opinião
Quando se trata de programação, vejo as coisas de forma abrangente. Eu sou da opinião de que é importante começar com a linguagem C, compreendendo a programação estruturada, juntamente com estrutura de dados. Posteriormente, podemos avançar para a programação orientada a objetos (POO) utilizando Java .
Decidi buscar a comunidade, pois acredito que este é o lugar ideal para discutir essa questão. Preciso de ajuda para determinar o que priorizar, quais conteúdos abordar e quais deixar de lado. Lembro-me de que, quando estava na escola, só aprendíamos algoritmos "básicos". No entanto, ao estudar por conta própria, descobri outros conceitos que achei úteis para ensinar em sala de aula.
Portanto, gostaria de ouvir a opinião de vocês sobre o que incluir no currículo, a sequência ideal e como abordar esses tópicos. É importante lembrar que estamos lidando com alunos do ensino médio, muitos dos quais podem não ter experiência prévia com programação, até mesmo com o manuseio do mouse. Por isso, planejo dedicar aproximadamente uma semana ao nivelamento.
O que vocês gostariam de aprender no início de suas carreiras na programação? Quais conceitos consideram essenciais?
Desde já, agradeço pela atenção e colaboração de todos! ❤️
Olá. Sou mestre em ciência da computação, e professor de programação na PUCMinas, a nível de pós-graduação.
Primeiramente, parabéns pela sua oportunidade!! Você está ajudando a transformar a vida de jovens, e ajudar no crescimento do nosso Brasil!
Minha primeira dica é a seguinte: recomendo que, antes de se preocupar com ferramentas, linguagens, e conteúdo, defina primeiro o objetivo desse curso. O que você espera que os alunos saibam depois de um ano? Isso se chama traçar os "Resultados de Aprendizagem" esperados (se precisar, jogue no Google. Há vários recursos no tema).
E a segunda dica: Ao traçar esse objetivo, tente se lembrar de que eles não estão em um curso de Ciencia da Computação na faculdade - que tem duração de 4 a 5 anos. Quando você vai formar cientistas da computação, faz sentido gastar bastante tempo ensinando estruturas de dados, algoritmos, complexidade, manipulação de memória heap e stack, e etc. Mas eles tem só um ano para aprender. O que dá pra ajudar eles a aprenderem em um ano, sem que fique faltando informação? Eles querem aprender programação web? Análise de dados? Jogos? Musicologia computacional?
Lembre-se também que não precisa ser cientista da computação para conseguir programar bem!
Imagine um cientista de dados, por exemplo. Se ele não for pesquisador, raramente ele vai ter que se preocupar se aquele DataFrame que ele usa no Pandas é implementado usando uma BTree ou um Hash Table. Nem se o sort_values() usa um QuickSort ou BubbleSort. Pra falar a verdade, ele nem precisa entender como funciona um algoritmo de backpropagation usado pra treinar Redes Neurais! Ele só precisa entender a lógica do resultado dessas funções, quando usar, e como usar (chamando os métodos da biblioteca, passando parâmetros, recebendo retornos, armazenando em variáveis, etc.).
Ou então, pense em alguém que implementa Sistemas de RPA na empresa dele. Ele não precisa saber se a biblioteca que ele usa pra controlar o mouse está comunicando via comunicação serial ou não. Ele não precisa nem saber que o código dele é convertido pra hexadecimal, e depois pra binário! Se um dia essa informação for importante pra ele, ele precisa saber como descobrir e interpretar essa informação. Isso sim é importante aprender de antemão: como buscar informações.
O que eu considero absolutamente essencial na programação é a lógica de programação. Isso não pode faltar, independentemente de qual trilha de carreira o aluno escolher no futuro.
Quando digo lógica de programação, quero dizer fluxo de código. Pense que os alunos não sabem nem o que é uma variável ainda (e precisarão saber!). Variáveis, funções, parâmetros, retorno, se tiver tempo, o que é uma classe e o que é um objeto (pra conseguirem usar bibliotecas). Mas eu diria que não precisa preocupar em ensinar complexidade de algoritmos, por exemplo! Isso eles aprendem na faculdade, com mais calma, e mais vontade.
Além de conteúdo, tente levar em consideração que seu maior papel nesse curso talvez não seja nem que eles saiam conseguindo fazer sites sozinhos. Às vezes seu papel será motivar os alunos a aprofundarem nessa área posteriormente. Fazer eles gostarem de programação, mostrar que não é tão difícil quanto eles pensam, fazer eles perceberem que eles conseguem SIM seguir uma carreira na área de tecnologia, e que são capazes. Pense sobre isso!
Então, resumindo: recomendo primeiro traçar o objetivo final do curso (os Resultados de Aprendizagem), e lembrar que você está ensinando programação a jovens, e não formando cientistas da computação.
Ah, e sugiro dar MUITOS exercícios pra eles fazerem em casa. Não dá pra aprender a programar sem tentar programar sozinho, né?
Boa sorte, dedique-se, e sei que você será um excelente professor, visto que está preocupado com a qualidade do seu curso, já que até veio aqui pegar dicas!
Um abraço!
Olá, sou professor de ensino médio de escola pública, vou dar algumas sugestões de acordo com o que vivencio no meu trabalho. Primeiro, o teu curso vai ser para escola pública ou particular? Na escola escola pública muitos alunos chegam no ensino médio com muita dificuldade na base, principalmente nas exatas, alguns mal conseguem ler. Acho que iniciar com C pode ser complexo de mais para eles, recomendaria algo mais simples onde eles possam ver um resultado mais rapidamente, talvez algo em python ou tentar introduzir um pouco de javascript para ir usando com html e css. Acredito que nesse momento o mais importante seja fazer eles gostarem da programação, faça eles se sentirem capaz de realizar coisas com a programação. Ensinar o básico já é un desafio no ensino médio, se ver que eles estão com dificuldades, pode tentar algo ainda mais simples como visualG ou Scratch.
Lógica
Quando todas as pessoas começam a aprender a programar focam logo eu aprender a usar a linguagem (eu fui uma dessas pessoas). Porém, em muitas situações precisamos esquecer a linguagem e focar no problema e como resolvê-lo. Quando eu comecei (com C também) aprendi rápido o funcionamento das linguagem e sabia copiar e rodar todos os códigos das apostilas. Mas em outros problemas eu não conseguia resolvê-los. Justamente por eu não ter exercitado o raciocínio-lógico, que é muito mais importante.
Levando em consideração que a educação pública no Brasil é muito precária, principalmente no ensino da matemática, a maioria dos estudantes não possui essa base matemática de forma sólida. Portanto, seria interessante tentar ajudá-los nessa questão. Exercitando bastante a lógica e a criatividade.
Também sou estudante de Ciência da Computação e percebo muito, principalmente nos primeiros semestres, muita gente reprovar nas disciplinas elementares como programação I, não por não saber programar, mas por não saberem pensar logicamente.
Olá @Hanufu, espero que esteja bem!
Uma boa lista de fundamentos que julgo ser necessários para quem está no início são Os Principais Fundamentos da Programação!
Mas uma boa forma de voce cativar seus alunos intermediários é instigando eles a criarem e a jogarem jogos uns dos outros, aprendendo os conceitos de programação, aprendendo inglês e de quebra se divertindo no processo! Recomendo muito que você considere utilizar o site Scratch, foi aí que eu aprendi a programar e sempre recomendo a todos que estão iniciando nessa área maravilhosa da programação e desenvolvimento!!!
Na minha opinião:
- Lógica de programação - usando Python que tem uma sintaxe muito mais simples do que a maioria dos pseudo códigos por aí. Nesse momento o mais importante seria que o aluno focasse apenas na lógica, imagina tu ter que aprender algo complexo e ainda por cima ter que ficar tendo que se preocupar com mil detalhes ?
- Algoritmos básicos e estruturas de dados básicas - Agora sim pode entrar C, nesse momento o aluno já teria mais bagagem pra poder começar a se preocupar com mais detalhes
- Web - html + CSS + js - acredito que essa é a parte que a maioria irá ficar mais interessado, só de conseguirem criar uma página simples já ficaram empolgados e interessados pelos próximos passos
- POO - Java - sem dúvidas essa vai ser a parte mais maçante pra um aluno de ensino médio e a maioria não irá entender porque precisam fazer as coisas desse jeito.
Acredito que dessa forma ficaria mais atrativo aos jovens. Além disso, eu dividiria em módulos e faria pequenos projetos funcionais, de preferência usando alguma didática mais gráfica ou gamificada. Por exemplo, é muito mais fácil explicar POO usando um personagem de RPG do que Animais... Aprender a fazer uma função que calcule a velocidade e o deslocamento de uma bola em determinado período de tempo é muito mais interessante que aprender a fazer uma função que calcula Fibonacci...
Conectar o código com a aplicação prática dele é fundamental, pelo menos nesse início.
Espero ter ajudado! Let's code 😎