Mostrar mensagens com a etiqueta Informática. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Informática. Mostrar todas as mensagens

domingo, 13 de dezembro de 2020

Saber é... saber perguntar

Pensamento computacional é um misto de muitas atitudes, que basicamente se reduzem a pensarmos sempre em como ensinaríamos um computador (uma máquina programável) a encontrar as respostas às nossas perguntas, sejam elas quais forem.
Um computador não faz perguntas, ajuda-nos a encontrar respostas.
O Google não ensina, ajuda-nos a aprender.
Mas perguntar ao Google é difícil, há quem encontre as respostas à primeira tentativa e há quem nunca as encontre. Pensamento computacional ajuda...


Só sabemos verdadeiramente um assunto quando somos capazes de formular perguntas, por mais complexo e trabalhoso que seja o caminho para encontrar a resposta.


Os humanos comunicam com as máquinas (que alguns criaram) usando linguagens (que outros criaram) e partilhando conceitos.
Portanto, "convencer" uma máquina a dar-nos uma resposta obriga a saber formular a pergunta e a traduzí-la numa linguagem que a máquina entenda, tirando partido das características mais próprias das máquinas, não se importa de realizar tarefas repetitivas, não se cansa, não inventa...
Tratar uma máquina como uma máquina, é uma das dimensões fundamentais do pensamento computacional.

quarta-feira, 26 de dezembro de 2018

Permutações

Perguntava o Público na semana passada: se colocarmos por ordem alfabética todas as "palavras" de sete letras que se podem obter permutando as sete letras da palavra SETÚBAL, qual será a palavra que aparece na posição 2018ª?
O número total de permutações é 7! = 7x6! = 7x720 = 5040, e agora temos de imaginar como se colocam por ordem alfabética e qual surgirá na posição 2018.
Colocando as sete letras por ordem alfabética, obtemos ABELSTÚ, o que quer dizer que das 5040 palavras, as primeiras 720 começam por A, as 720 seguintes, nas posições 721 a 1440, começam por B, as seguintes, nas posições 1441 a 2160, começam por E, etc. 2018 fica neste grupo, logo a palavra procurada começa por E.
A seguir, podemos procurar a segunda letra, dividindo este grupo em 6 grupos de comprimento 120, uma vez que 6! = 6x5! = 6x120, depois o grupo em que 2018 recair em 5 grupos de comprimento 24, etc.
Deixando um bocadinho de mistério para o leitor, a figura seguinte esquematiza todo o raciocínio, e dá o resultado: ETÚABSL.


Evidentemente que um computador resolve isto à força e com uma perna às costas:


É só experimentar.
Mas a ideia geral é que perante cada problema cada um deve olhar para os recursos (de conhecimentos e de computação) de que dispõe e procurar uma forma de o resolver.
Ou esperar pelo Público da próxima semana...

sábado, 18 de abril de 2015

Torre de Hanói

Um problema que muitas vezes se usa para ilustrar o poder da recursividade é o da torre de Hanói.
Segundo a lenda, numa cidade no centro do mundo, um monge realiza a tarefa de mover 64 discos de um pilar para outro, usando apenas um pilar auxiliar, e de acordo com duas regras simples: só pode mover um disco de cada vez e nunca pode colocar um disco sobre outro de menor diâmetro. Quando terminar a tarefa, será o fim do mundo...


Este problema pode ser analisado sob o prisma da recursividade. Realmente, se soubermos resolver o problema para n-1 discos, sabemos facilmente resolvê-lo para n discos!
Como? Aplicando a solução para os n-1 discos duas vezes: primeiro, movendo todos os discos menos o de maior diâmetro para o pilar auxiliar, em seguinda movendo o disco de maior diâmetro para o pilar de destino, e finalmente movendo os n-1 discos que estão no pilar auxiliar para  o pilar de destino...
E já está? Estaria se soubéssemos efectivamente mover os n-1 discos. E se não soubermos? Segundo a mesma lógica, bastaria saber mover n-2 discos, etc.
Repetindo o raciocínio, devemos chegar ao ponto em que basta saber mover 2 discos, e isso sabemos facilmente, com 3 movimentos: mover o disco de menor diâmetro para o pilar auxiliar, mover o disco de maior diâmetro para o pilar de destino, e finalmente mover disco de menor diâmetro do pilar auxiliar para o pilar de destino.
E quantos movimentos serão necessários para mover os 64 discos? Se representarmos por mov(n) o número de movimentos necessários para transportar n discos, ter-se-á:

mov(2) = 3
mov(3) = mov(2) + 1 + mov(2) = 3 + 1 + 3 = 7
mov(4) = mov(3) + 1 + mov(3) = 7 + 1 + 7 = 15 = 2^4 - 1
mov(5) = mov(4) + 1 + mov(4) = 15 + 1 + 15 = 31 = 2^5 - 1
...
mov(64) = 2^64 -1

o que dá exactamente 18 446 744 073 709 551 615 movimentos! Se o monge conseguisse realizar um movimento por segundo, demoraria aproximadamente 5849 milhões de séculos para concluir a tarefa...
Ora aqui está outro belo tema para uma página Web a desenvolver por alunos do 7º ano do nosso ensino secundário.

Recursividade

A recursividade, a capacidade de formular de forma recursiva a solução de um problema, é uma das dimensões do chamado pensamento computacional.
Sempre que se fala de recursividade, costuma usar-se a função factorial para a ilustrar.
Realmente, como fact(n) = n x fact(n-1), acrescentando uma condição de paragem, fact(1) = 1, temos a função factorial definida de uma forma recursiva:

def fact(n):
    if (n <= 1):
        return 1
    else:
        return n * fact(n - 1)

Encontrei recentemente uma ideia muito interessante para ilustrar a recursividade, sem recorrer a estes conceitos de programação.
Imagine o leitor que está sentado numa fila de um anfiteatro, a assistir a um espectáculo, e pretende saber qual é o número da fila em que está sentado.

Image result for anfiteatro

Uma solução será perguntar a um espectador sentado na fila à sua frente em que fila está, e somar 1 à resposta obtida. Se este espectador não souber, ele próprio pode proceder de modo idêntico relativamente ao espectador da fila seguinte, e assim sucessivamente, até um saber a resposta (eventualmente um espectador sentado na primeira fila!). Nesse momento, o problema fica resolvido.

E que tal desafiar um grupo de alunos de TIC, 7º ano de escolaridade, a entender este conceito e explicá-lo numa página Web de sua autoria? Também é assim que se desenvolve o pensamento computacional...

segunda-feira, 8 de dezembro de 2014

A hora do código

A Khan Academy desafia os estudantes, os Pais e os professores a aprender a programar, seja a desenhar, através de páginas Web, ou da criação de bases de dados.

 Khan Academy

Desenho e páginas Web para os miúdos de 8 anos, bases de dados para os miúdos de 12 anos.
Criar espaço para o pensamento computacional, sem confundir com processamento de texto, folhas de cálculo, ou apresentações, ferramentas informáticas transversais, da vida corrente, presentes em todos os computadores, é absolutamente fundamental.
Apesar dos pequenos passos que têm sido dados, enquanto não se trabalhar a sério na formação de professores capazes de motivar os nossos miúdos para a descoberta do computador como ferramenta ao seu serviço, como máquina que podem programar para a execução de tarefas repetitivas ou complexas, ou para a realização de experiências de simulação, por exemplo, continuaremos a divergir do que está a acontecer em tantos outros países.

quinta-feira, 26 de junho de 2014

Programar sem computadores 2

Agora que fizemos o primeiro programa, é altura de começar a pensar se as instruções que propusemos para mover o executante no tabuleiro gigante são as mais convenientes

Bom Jesus

Código:
origem: ir para a casa central e olhar para o Bom Jesus
fn: andar para a frente n casas
d: rodar 90º para a direita
p: parar
rn: repetir n vezes o que se segue


Olhemos para a instrução d: rodar 90º para a direita. E se quisessemos rodar 90º para a esquerda? Realmente, podíamos. Se rodarmos uma segunda vez para a direita, ficamos virados para trás, e se rodarmos uma terceira vez, ficamos virados para a esquerda.

Este programa funciona, e desenha um quadrado de lado 3
origem
r4
  f3
  d

  d
  d
p


Bom Jesus

Contudo não é muito elegante. Podemos talvez acrescentar uma instrução
e: rodar 90º para a esquerda,
ou, melhor, modificar a instrução
d: rodar 90º para a direita
para aceitar um parâmetro, ângulo, ficando
dn: rodar n graus para a direita

Rodar 90º para a esquerda é rodar -90º para a direita
origem
r4
  f3
  d-90

p

E aqui temos um programa bem mais compacto, como todo o código deve ser.

quarta-feira, 11 de junho de 2014

CodeWeek

De 11 a 17 de Outubro de 2014 decorre em toda a Europa a CodeWeek, um conjunto de eventos onde novos e velhos, aprendizes e mestres, vão experimentar formas de ensinar e aprender a usar computadores no seu dia a dia.
No âmbito desta iniciativa, estamos a organizar na Católica Braga um evento a que chamamos "Programar sem computadores", em que vamos brincar à programação com os mais novos, através de um conjunto de acividades divertidas em que todos poderão desempenhar os papéis de programador ou de computador, isto é, daquele que escreve os programas ou daquele que os executa.
O nosso espaço, o nosso dispositivo de entrada saída, o nosso écrã, será todo o campus da FaCiS,


onde os participantes se movimentarão na execução ou na criação de "programas" que proponham movimentos ou interacções com outros objectos existentes.
Estamos na fase de preparação do projecto, e aceitamos todas as sugestões que nos queiram fazer no sentido de valorizar o evento.
Falem-nos!

segunda-feira, 14 de abril de 2014

Pós-graduação

É oficial.
Estão abertas as pré-inscrições para a primeira edição da pós-graduação em Pensamento Computacional e Ensino de Informática, na Católica Braga
O desafio está lançado.
Venham aprender conosco!

sábado, 12 de abril de 2014

Um exercício de pensamento computacional (2/2)

Retomamos aquele exercício de "somados somos um quadrado perfeito", para apresentar um pequeno programa capaz de explorar o espaço de soluções, 25! como sabemos, de uma forma organizada e com um esforço mínimo.
Este programa faz isto mesmo:
Começando com as 25 bolas, a operação realiza-se em 24 passos, em cada um dos quais se tenta acrescentar mais uma bola a cada fila de bolas já colocadas. Se não for possível, essa fila é abandonada.
Aqui estão as 20 soluções encontradas:
Tal como previmos, metade dessas soluções começa pelo número 18 e outra metade termina pelo número 18, uma vez que o número 18 só faz parelha com o número 7.

quarta-feira, 2 de abril de 2014

Pensamento computacional e ensino de Informática

Muitos professores de Informática não tiveram a formação necessária para trabalhar, e muito menos para ensinar a trabalhar, com as ferramentas informáticas do mundo de hoje, para compreender o mundo da Informática em toda a sua extensão, para perceber o papel da Informática na economia, para despertar nos jovens o gosto pelas questões informáticas.
Esta transformação de mentalidades é muito complexa, não se consegue com um simples clique, exige um enorme esforço de "desaprender", de ver a realidade de uma forma diferente, com um certo distanciamento, como algo com que temos de interagir todos os dias, e de que a tecnologia é apenas uma parte.
Basta olharmos para o modo intuitivo como jovens interagem com os telemóveis, com os jogos, com as bilheteiras automáticas, com uma quantidade de dispositivos à nossa volta, para o percebermos.
Por onde começar, então?
Não é fácil elaborar uma proposta segura. Pode ver-se o que outros fazem, pode olhar-se para as aplicações informáticas que nascem todos os dias, pode partir-se da nossa própria experiência, mas haverá sempre alguma incerteza.
Na Inglaterra, a iniciativa Computing at School tem vindo a dar muitas pistas, a Universidade de Manchester tem uma oferta de cursos para professores nesta área, e muitos outros existem, de que já falamos ou iremos falar.
Na minha opinião, um curso desta natureza poderia ser constituído por quatro módulos básicos,

  • Python (programação sem enfeites),
  • Informação, Computação e Redes (do bit à nuvem),
  • Visualização e Análise de Dados e Redes,
  • Projecto (Raspberry Pi/Android/iOS/Gephi),

ao longo de um semestre, que, uma vez concluídos com sucesso,  dariam a cada um uma base sólida para olhar para a Informática de uma outra forma e para abraçar novos desafios.
É só uma ideia. Alguém quer experimentar?
Reacções são bem vindas...

sábado, 29 de março de 2014

Um exercício de pensamento computacional (1/2)

Um dos meus desafios dos tempos de hoje consiste em ajudar a preparar uma nova geração de professores de Informática para as tarefas que lhes irão ser exigidas no futuro, num futuro em que já se percebeu que a Informática é uma disciplina estruturante do pensamento, em que todos teremos de estar mais preparados para ler a realidade de uma forma crítica, para identificar os problemas e o seu grau de complexidade, e para formular soluções, eventualmente com o recurso a computadores ou outras máquinas programáveis.
Na minha aula de ontem, propus aos alunos que olhassem para um problema que encontrei recentemente nas páginas do Público:
Cada aluno tinha um computador à sua frente.
Este problema, aparentemente simples, levanta muitas questões muito interessantes para quem, como eu, gosta de ver como as pessoas tentam atacar estas situações. Exemplos de reacções iniciais:
i) não saber o que são quadrados perfeitos,
ii) não perceber o enunciado e começar a atirar coisas para o ar, completamente disparatadas,
iii) perceber problemas diferentes, sem qualquer sentido, que me abstenho de reproduzir.
Curiosamente, ninguém se interrogou sobre se o problema teria solução, se haveria muitas, se seria trivial ou muito complicado, isto é, ninguém olhou criticamente para o probema.
A título de provocação, sugeri um problema "mais simples", só com os números de 1 a 5, e aí foi mais fácil concluir que neste caso não haveria nenhuma solução, pois os números 1 e 3 têm de ficar encostados, bem como os números 4 e 5, mas não há mais nenhum par de números cuja soma seja um quadrado perfeito:
Esta análise permitiu entre outras coisas concluir que com os números de 1 a 25, terá de haver um mínimo de 24 pares de números cuja soma é um quadrado perfeito. E haverá?
Com alguma relutância (estas coisas ou se praticam ou...) conseguimos produzir e executar um pequeno programa em Python que lista todos os pares de números entre 1 e 25 cuja soma é um quadrado perfeito:
São 32. Serão suficientes? Continuaremos.

quinta-feira, 27 de março de 2014

Google Exploring Computational Thinking

Pensamento computacional é uma competência essencial para os nossos jovens, mas muito poucos professores estarão preparados para fazer despertar nas suas mentes esta maneira de olhar para a realidade, de detectar as abstracções, os automatismos, os algoritmos, os padrões que nela se escondem.
Nós, os professores, que aprendemos uma certa Informática, temos normalmente dificuldade em dar o primeiro passo no sentido da descoberta destes jogos escondidos, destes segredos, destas pequenas coisas que começamos a verificar que interessam as mentes curiosas da gente mais nova, habituada a viver e sobreviver neste mundo complexo que estamos a criar, em que o pensamento, o pensamento crítico, a compreensão dos mecanismos com que nos defrontamos no dia a dia, fazem a diferença.
No entanto, todos os dias lidamos com situações que permitem levar à descoberta de formas simples de pensar, de formas estruturadas de organizar o pensamento.
Seja escolher a melhor maneira de arrumar as peças Lego em caixas de forma a simplificar a procura duma determinada peça, seja escolher o melhor percurso para recolher um pequeno número de produtos nas prateleiras de um supermercado, seja encontrar estratégias para fazer a gestão das filas das caixas, o dia a dia é a melhor fonte para descobrir o pensamento computacional.
A Google, sempre a Google, disponibiliza uma série de ideias, projectos e recursos num sítio a que chamou Exploring Computational Thinking, e que recomendo vivamente.

segunda-feira, 24 de março de 2014

Ensino de Informática e Pensamento Computacional

Pensamos que a Informática, o software, poderá assumir um papel decisivo na formação dos nossos jovens, ao motivar em cada jovem uma reflexão sobre a relação pessoa máquina, entendendo a máquina ao serviço do Homem, e não o seu contrário.
A necessidade de comunicar com uma máquina obriga a formular os problemas de uma forma lógica, usando abstracções e estruturas simples que contribuem para uma visão mais clara da realidade.
A questão consiste saber como formar os professores que poderão despertar estas competências nos seus jovens alunos do ensino básico e secundário, através de actividades simples e motivadoras, tanto quanto possível inspiradas na realidade do dia a dia.
Numa onda avassaladora, o projecto Hour of Code já chegou a mais de dois milhões de pessoas no Reino Unido, isto depois de ter atraído cerca de vinte nos Estados Unidos da América.
A reflexão que tem sido feita na comunicação social destes países, o confronto de diferentes visões, as dificuldades que professores naturalmente sentem perante o desafio de ensinar algo que nunca aprenderam, o entusiasmo dos jovens e das suas famílias, ajudam a melhor atingir os objectivos que os novos currículos adoptados nestes países ambicionam.
E uma coisa é certa: tal como o ensino da Música, por exemplo, não se destina a formar músicos para as nossas orquestras, mas sim a contribuir para a formação integral dos jovens, o ensino da Informática deve proporcionar o contacto com as noções básicas de Informação, de abstracção, de algoritmo, sem visar a formação de programadores Informáticos.

domingo, 23 de março de 2014

Jeannette Wing

Reconheço em Jeannette Wing a grande força inspiradora da ideia de pensamento computacional. A sua visão para a educação no século XXI marcou, e está a marcar, de uma forma decisiva um novo rumo.
Professora de Carnegie-Mellon University, fundadora do Center for Computational Thinking, neste momento on leave na Microsoft Research, contribuiu para a definição que considero mais interessante de pensamento computacional: o processo mental que conduz à formulação de problemas e das suas soluções de tal modo que as soluções são representadas numa forma que um agente de processamento de informação é capaz de tratar.
Os slides acima falam por si.
O projecto, esse sim, é ambicioso, imparável, já está a acontecer neste momento na Inglaterra, por exemplo, vai demorar tempo, e vai encontrar uma forte resistência de muitos professores, que se vão considerar ameaçados por esta nova visão da Informática como disciplina estruturante do pensamento humano.

Porquê?

A coordenação do Mestrado em Ensino de Informática da UCP, que vai na sua 4ª edição, e que prepara professores para o grupo 550 do 3º ciclo do Ensino Básico e do Ensino Secundário, tem-me levado a conhecer com algum detalhe o estado do ensino das nossas gerações futuras, nomeadamente, mas não só, nas áreas da Informática e das Tecnologias de Informação e Comunicação (TIC) que aliás amiúde por cá se confundem.
Em Portugal, e um pouco por todo o mundo, temos de o admitir, o desenvolvimento das TIC e a massificação do ensino, levou à chegada às Escolas de professores com formações improvisadas, deslumbrados com as "tecnologias" mais banais, que se apropriaram do ensino das TIC, com programas completamente desadequados, criados por quem não sabia, por ministérios que reduziram as suas "políticas" aos "planos tecnológicos" e a "semear" Magalhães e quadros interactivos pelas escolas, em negócios de milhões, que causaram mais prejuíxos que verdadeiros progressos no nosso sistema de ensino.
Em Julho de 2012, mesmo em cima do início do ano lectivo 2012/13, o Ministério da Educação e Ciências apresentou as Metas Curriculares de Tecnologias de Informação e Comunicação do Ensino Básico - 3.º Ciclo, o primeiro sinal de que algo poderia vir a mudar no ensino das TIC no nosso País. Sem pré-avisos, sem formação adequada dos professores, sem objectivos estratégicos de todos conhecidos, num cenário no fundo mais que habitual.
Entretanto, enquanto por cá se esbracejava e improvisava, lá fora, Países com mais cuidado com as suas gerações futuras, iam estudando, nas universidades, nas associações de professores, nas escolas, quais as verdadeiras necessidades de formação dos jovens nativos digitais, com ritmos, com treino, com competências mentais completamente diferentes das dos professores que penosamente lhes tentavam ensinar, como melhor (não) sabiam, a arquitectura dos computadores, Word, Excel, Power Point, enquanto desprezavam outras ferramentas, como o Moodle, que essa sim, poderia fazer a diferença entre uma escola dos ditados, dos sumários, dos materiais obsoletos, dos resumos, e uma escola em que os professores sabem usar o Moodle ou outro Learning Management System (LMS) para partilhar e melhorar continuamente os seus materiais e para criar actividades motivadoras para os seus alunos, ao mesmo tempo que valorizam a sua própria actividade no dia a dia.
Estamos a falar de pensamento computacional.
É este o nosso ponto de partida.