
Meu trabalho principal está relacionado a dados e programação em R, mas neste artigo quero falar sobre meu hobby, que até gera algum rendimento. Sempre tive interesse em contar e explicar algo para amigos, colegas de classe e colegas de curso. Além disso, sempre fui bom em encontrar um bom entendimento com crianças, não sei por quê. De modo geral, acho que educar e ensinar crianças é uma das ocupações mais importantes que existem, e minha esposa é pedagoga. Enfim, há cerca de um ano, publiquei um anúncio em um grupo local no Facebook, formei um grupo e comecei a ensinar Scratch e Python uma vez por semana. Agora tenho cinco grupos, minha própria sala em casa e aulas individuais. Como cheguei a essa situação e como ensino as crianças, contarei neste artigo.
Eu moro no Canadá, na cidade de Calgary, na província de Alberta, então alguns pontos estarão relacionados à especificidade local.
Espaço
A disponibilidade de espaço para as aulas foi desde o início o principal problema. Eu tentei procurar escritórios e salas para alugar por hora, mas sem muito sucesso. Nossa universidade e o SAIT — a versão local do MIT — alugam salas com e sem computadores. Os preços lá não eram muito razoáveis, e, no final, descobri que a universidade não permite a entrada de menores de idade, e o SAIT aluga apenas para seus estudantes. Portanto, essa opção foi descartada. Existem muitos centros de escritórios que alugam salas de reunião e escritórios por hora, e há empresas inteiras que oferecem uma variedade de opções, desde salas de aula completas até pequenas salas para quatro pessoas. Eu tinha esperanças, já que Alberta é uma província petrolífera, e desde 2014 vivemos uma crise prolongada, com muitos espaços comerciais vazios. Lamentavelmente, eu tinha esperanças, mas os preços eram tão exorbitantes que inicialmente não acreditei. Para os proprietários, é mais fácil deixar os escritórios vazios e pagar os custos do que fazer uma guerra de preços.
Neste momento, lembrei-me de que pago meus impostos em dia, e me perguntei se havia algo para o nosso caro estado, ou melhor, para a cidade de Calgary. Aconteceu que sim, havia. A cidade possui arenas para jogar hóquei e outras atividades de patinação, e nessas arenas há salas onde os duros guerreiros do gelo discutem estratégias para futuras batalhas. Resumindo, junto a cada arena há algumas salas equipadas com mesas, cadeiras, um quadro branco e até uma pia com uma chaleira. O preço é bastante razoável — 25 dólares canadenses por hora. Inicialmente, decidi fazer as aulas de uma hora e meia, então estabeleci o preço de $35 por pessoa em um grupo de cinco, para cobrir o aluguel e também deixar algo no meu bolso. De modo geral, eu gostava de fazer as aulas nas arenas, isso resolvia um dos problemas — a maioria dos falantes de russo mora ao sul, enquanto eu moro ao norte da cidade, então escolhi uma arena mais ou menos no meio. Mas havia algumas desvantagens. A burocracia canadense é boa e amigável, mas, para ser gentil, às vezes pode ser um pouco lenta. Não há problemas quando você se acostuma com o ritmo e planeja com antecedência, mas às vezes surgem situações desagradáveis. Por exemplo, no site da cidade, é fácil escolher hora e lugar e reservar uma sala, mas pagar é impossível. Eles ligam para você e aceitam pagamento por cartão. Você também pode ir ao escritório e pagar em dinheiro. Houve um momento engraçado, mas não muito agradável, quando esperei a ligação deles para pagar pela segunda aula, não recebi a ligação, e no último dia cheguei quinze minutos atrasado ao escritório. Tive que me aproximar da segurança com uma expressão confiante e mentir que a sala estava reservada. Nós, canadenses, acreditamos nas pessoas, então me deixaram entrar sem checar, mas eu não teria feito isso se as pessoas já não estivessem a caminho da aula.
Assim, eu trabalhei durante o inverno e a primavera, mas depois ocorreram mudanças que foram a gota d'água. Em primeiro lugar, o escritório foi fechado para visitantes e ofereceram a opção de pagamento por telefone na esquina. Eu fiquei sentado por pelo menos meia hora no corredor antes de conseguir ligar. Em segundo lugar, se antes uma senhora simpática aceitava meu pagamento por uma hora e meia, agora uma garota atendeu e disse que o pagamento era apenas por uma hora. Naquele momento, meu grupo tinha, às vezes, três, outras duas pessoas, e os $12.5 extras não estavam de modo algum a mais. Eu, claro, sou idealista, mas se minha esposa me expulsar para a rua, não haverá ninguém para ensinar. Naquela época, eu ainda estava sem trabalho.
E eu decidi ir para a biblioteca. As bibliotecas oferecem salas excelentes completamente gratuitas, mas há um porém — não é permitido realizar atividades comerciais. Mesmo organizações de caridade não têm permissão para arrecadar dinheiro lá. Disseram-me que isso não é especialmente fiscalizado, o principal é não cobrar dinheiro na entrada, mas eu realmente não gosto de quebrar regras. Outro problema é que as salas frequentemente estão ocupadas e é difícil realizar as aulas de acordo com o horário em um só lugar. Lecionei em bibliotecas no verão e no início do inverno, e tive que escolher aquelas onde havia espaço, no total, mudei de cinco a seis bibliotecas. Depois comecei a reservar espaço com dois meses de antecedência, e mesmo assim, consegui fazer isso apenas em uma pequena biblioteca, nas outras, regularmente não havia espaço no horário desejado. Então decidi criar uma sala de aula de informática em casa. Instalei um quadro, comprei uma segunda mesa e alguns monitores antigos por anúncio. A empresa me forneceu um laptop novo e potente, pois no meu computador a análise levava quase 24 horas. Assim, eu tinha um novo computador antigo, um computador antigo, um laptop que meu filho quebrou a tela e um netbook antigo, cujo a tela eu mesmo quebrei. Conectei todos eles aos monitores e instalei Linux Mint em todos, exceto no netbook, onde coloquei uma distribuição bem leve, parece que é o Puppy. Eu também tenho um novo laptop antigo, comprado por $200, que conectei à TV. Além disso, nosso proprietário recentemente trocou as janelas, e agora no quarto, ao invés daquela coisa horrível em ruínas, temos novas molduras brancas. A sala de estar, a cozinha e o segundo quarto minha esposa mantém como uma creche, portanto, todo o andar ficou puramente pedagógico. Assim, agora a sala está boa, vamos passar diretamente ao ensino.
Scratch
Começo a ensinar os fundamentos da programação com a linguagem Scratch. É uma linguagem que utiliza blocos prontos, criada na época no MIT. A maioria das crianças já viu Scratch na escola, portanto, se adapta rapidamente. Existem programas prontos e planos de aulas, mas eu não gosto deles de forma alguma. Alguns são estranhos — como criar sua própria história, por exemplo. Todo o programa é composto por incontáveis blocos. say '' for 2 secondsÉ evidente que foi criado por pessoas muito criativas, mas com essa abordagem é possível ensinar a escrever códigos clássicos em spaghetti indiano. Desde o início, eu falo sobre princípios como D.R.Y. Outras coleções de exercícios são bastante boas, mas as crianças rapidamente entendem a essência e começam a resolver como se estivessem em uma metralhadora. No final, em uma aula, fazem o que deveriam fazer em cinco. Ao mesmo tempo, a busca e seleção de exercícios consome muito do meu tempo pessoal. Na verdade, o Scratch se parece mais com um IDE, onde você apenas precisa lembrar onde clicar e onde procurar. Assim que os alunos mais ou menos se adaptam, eu tento transferi-los para o Python. Eu até tenho uma garotinha de sete anos que escreve programas simples em Python. O que vejo de bom no Scratch é que ele contém conceitos fundamentais que são aprendidos de forma lúdica. Por algum motivo, todos, sem exceção, têm muita dificuldade em entender a ideia de variável. No começo, eu passava rapidamente por esse tópico e seguia adiante, até me deparar com o fato de que eles não sabiam o que fazer com isso. Agora, dedico muito tempo às variáveis e sempre retorno a elas. Acaba sendo um trabalho repetitivo. Eu mudo diferentes variáveis na tela e forço-os a dizer seus valores. Além disso, o Scratch possui estruturas de controle e verificações de valores, como while, para ou if no Python. São apresentadas de forma relativamente fácil, apenas com loops aninhados às vezes surgem problemas. Tento dar várias tarefas com loops aninhados, e para que a ação deles seja visual. Depois disso, passo para as funções. Mesmo para adultos, o conceito de função pode não ser claro, e para as crianças — ainda mais. Eu fico explicando por um bom tempo o que é uma função, falo sobre uma fábrica que recebe itens e entrega produtos, sobre um cozinheiro que transforma ingredientes crus em comida. Então, fazemos um programa "faça um sanduíche" com os ingredientes, e depois transformamos isso em uma função, onde os ingredientes são passados como parâmetros. Ao estudar funções, encerro o uso do Scratch.
Python
Com o Python é mais fácil. Há um bom livro chamado Python for Kids, com o qual ensino. Nele, tudo é padrão — strings, ordem das operações, print(), input() e etc. Escrito em uma linguagem simples e com humor, as crianças gostam. Tem um defeito comum a muitos livros de programação. Como na piada famosa - como desenhar uma coruja. Oval - círculo - coruja. A transição de conceitos muito simples para conceitos bastante complexos é abrupta. Para que o objeto seja associado ao método por um ponto, eu gasto várias aulas. Por outro lado, não tenho pressa, repito a mesma coisa de várias maneiras até que uma imagem se forme. Começo com variáveis e continuo a bater nelas, já em Python. Variáveis são como uma maldição.
Um aluno inteligente, que há alguns meses estava habilidosamente lidando com variáveis em Scratch, agora olha como um carneiro para um novo portão e não consegue somar x e y, que estão claramente escritos no quadro logo acima. Vamos repetir! O que uma variável tem? Nome e valor! O que significa o sinal de igual? Atribuição! E como verificamos a igualdade? Com dois sinais de igual! E assim repetimos novamente e novamente, até o total entendimento. Depois passamos para funções, onde o que mais leva tempo é explicar sobre argumentos. Argumentos nomeados, por posição, padrão, e assim por diante. Não chegamos a classes em nenhum grupo ainda. Além de Python pelos livros, estamos estudando algoritmos populares, mais sobre isso depois.
Na verdade, o aprendizado
Minha aula é organizada assim - meia hora eu dou teoria, verifico o conhecimento, reforço o que foi aprendido. Uma hora - laboratório. Muitas vezes eu me empolgo e falo por uma hora, então sobra meia hora para a prática, respectivamente. Quando eu aprendi Python, assisti a um curso Algoritmos e Estruturas de Dados Khiryánova do MIPT. Eu gostei muito da sua apresentação e da estrutura das aulas. A ideia dele é que frameworks, sintaxes e bibliotecas estão se tornando obsoletos. Arquitetura, trabalho em equipe e sistemas de controle de versões — ainda é cedo. No final, permanecem os algoritmos e estruturas de dados, que são conhecidos há muito tempo e continuarão a existir em formas similares. Eu mesmo, vindo do Pascal do instituto, só lembro dos inteiros. Como meus alunos são em sua maioria jovens, entre sete e quinze anos, eu considero que, para o futuro deles, é mais importante construir as bases do que correr para escrever um jogo de plataforma em Python. Embora eles queiram mais o jogo de plataforma, e eu os entendo. Eu lhes apresento algoritmos simples — ordenação por bolha, busca binária em listas ordenadas, notação polonesa reversa utilizando pilhas, mas analisamos cada um muito detalhadamente. Descobri que as crianças modernas nem sabem como um computador funciona, também explico isso. Eu procuro em cada aula conectar vários conceitos juntos. Por exemplo, um computador — memória/proc — memória feita de células (dou para segurarem um módulo de memória, adivinhem quantas células aqui existem) — cada célula como uma lâmpada — tem dois estados — true/false — and/or — binário/decimal — 8 bits = 1 byte — byte = 256 variantes — tipo de dado lógico em um bit — números inteiros em um byte — float em dois bytes — string em um byte — o maior número em 64 bits — lista e tupla dos tipos anteriores. Esclareço que em um computador real tudo é um pouco diferente e a quantidade de memória para esses tipos de dados é outra, mas o importante é que nós mesmos, em processo, criamos tipos de dados mais complexos a partir de tipos mais simples. Os tipos de dados são, provavelmente, a parte mais difícil de lembrar. Por isso, começo cada aula com um rápido aquecimento — um aluno nomeia um tipo de dado, o próximo traz dois exemplos, e assim por diante em círculo. No final, consegui que até as crianças mais jovens gritem animadamente — float! boolean! sete, cinco! pizza, carro! Durante a aula, frequentemente chamo um ou outro, senão eles rapidamente começam a se coçar e olhar para o teto. E também preciso verificar o nível de conhecimento de cada um entre as discussões.
Meus alunos não deixam de me surpreender tanto pela sua falta de entendimento quanto pela sua inteligência inesperada. Com sorte, a inteligência é mais comum.
Queria escrever mais, mas já ficou um longo texto. Estou à disposição para responder a todas as perguntas. Aceito qualquer crítica com prazer, mas peço que sejamos mais tolerantes uns com os outros nos comentários. Este é um artigo construtivo.
Fonte: habr.com
