Lição 2: Compactação de Texto

Grades 6-8 | Grades 9-12

Visão Geral

Em algum ponto, chegamos a um limite físico da rapidez com que somos capazes de enviar bits e se quisermos enviar uma grande quantidade de informações mais rápido, precisamos encontrar um modo de representar as mesmas informações com menos bits. É necessário compactar os dados. Nesta lição, eles usarão o Widget Compactação de Texto para compactar segmentos de textos em inglês procurando padrões e substituindo símbolos por padrões maiores de texto.

Propósito

O princípio básico por trás da compactação é desenvolver um método ou protocolo para usar poucos bits a fim de representar a informação original. O modo como representamos os dados compactados nesta lição, com um "dicionário" de padrões repetidos, é parecido com o LZW compression schemeesquema de compactação LZQ, mas é preciso observar que o LZQ é ligeiramente diferente do que os estudantes fazem nesta lição. Aqui eles criam sua própria maneira. O LZW não é usado apenas para texto (arquivos .zip), mas também com o formato de imagem GIF.

Agenda

Primeiros passos (5 a 7 min)

Atividade (45 min)

Encerramento (10 min)

Aprendizagem complementar

Objetivos

Os estudantes serão capazes de:

  • Colaborar com um colega para encontrar uma solução para um problema de compactação de texto usando o widget Text Compression (esquema de compactação sem perdas).
  • Explicar por que é difícil ou impossível identificar a quantidade ideal de compactação.
  • Explicar alguns fatores que tornam a compactação desafiadora.
  • Descrever o objetivo e o raciocínio da compactação sem perdas.

Preparação

— Teste o Widget Compactação de Texto — Revise as dicas de aprendizado para decidir quais opções você querer usar

Links

Aviso! Faça uma cópia dos documentos que você planeja compartilhar com os estudantes.

Para Teacher

Para Students

Vocabulário

  • Compactação sem perdas - Algoritmo de compactação de dados que permite que os dados originais sejam reconstruídos com perfeição a partir dos dados compactados.

Suporte

Relatar um Bug

Guia de Ensino

Primeiros passos (5 a 7 min)

Aquecimento: Abrev em msg de txt (5 a 7 min)

[][0]

Como aquecimento para pensar na compactação de textos, faça uma ligação com maneiras que a maioria das pessoas já usa para compactar textos no dia a dia, por meio de abreviações e siglas com as quais a maioria tem alguma experiência em mensagens de texto.

Estimule algumas ideias sobre por que alguém compactaria um texto.

[/][0]

Instigue:

[][1]

  • “Quando você envia mensagens de texto para um amigo, escreve todas as palavras da forma correta?”
    • Você usa abreviações de palavras comuns? Liste quantas puder.
    • Escreva alguns exemplos de coisas que encontramos em uma mensagem de texto, embora não seja português correto.

Dê aos alunos um minuto para que escrevam e compartilhem com um colega ao lado.

  • “Por que você usa essas abreviações? Qual é a vantagem?”
    • Respostas possíveis:
      • para economizar caracteres/pressionamentos de tecla
      • para esconder dos pais/professores
      • para parecer legal, inteligente ou engraçado
      • para usar uma linguagem “secreta”
      • para dizer a mesma coisa com menos espaço

[What's this about? - Compression: Same Data, Fewer Bits][2]

  • A aula de hoje é sobre compactação
  • Quando abreviamos ou usamos uma linguagem codificada para encurtar o texto original, estamos “compactando” um texto. Os computadores também fazem isso para economizar tempo e espaço.

  • A arte e a ciência da compactação envolvem descobrir como representar os MESMOS DADOS com MENOS BITS.

  • Por que isso é importante? Uma razão é que o espaço de armazenamento é limitado e sempre é preferível usar menos bits, quando possível. Uma razão muito mais atraente é que existe um limite superior para a velocidade de transmissão de bits pela internet.

  • E se precisarmos enviar uma grande quantidade de texto com mais rapidez pela internet, mas tivermos atingido o limite físico da velocidade de envio de bits? A única opção é, de alguma forma, registrar as mesmas informações com menos bits. Chamamos isso de compactação.

[/][2]

Transição:

Vamos analisar um exemplo de mensagem de texto que foi compactada de uma maneira inteligente.

Atividade (45 min)

Decodifique este texto misterioso (10 a 15 min)

  • Distribua ou mostre o guia de atividades: [decode-this-message][0]
  • Coloque os alunos para trabalharem em dupla ou individualmente.
  • Tarefa: Qual era o texto original?
  • Dê alguns minutos para que os alunos decodifiquem o texto. O texto deve ser um pequeno poema (veja a recapitulação da atividade abaixo)
Guia de atividades do aluno Recapitulação da atividade
Distribua ou mostre o guia de atividades: [decode-this-message][3] (Mostre ou desenhe você mesmo) Recapitulação da atividade: [activity-recap-decode-this-message][4]
[][1] [][2]

Recapitulação: quanto foi compactado?

Para responder, precisamos comparar o número de caracteres do poema original com o número de caracteres necessários para representar a versão compactada.

Vamos detalhar.

  • Mostre ou demonstre você mesmo ideias da: [activity-recap-decode-this-message][5] (exibida na tabela acima)

  • Observação importante:

    • O poema compactado não é apenas esta parte: [][6]{style="width: 250px"} Se enviássemos isso para alguém pela internet, a pessoa não conseguiria decodificá-lo.
    • O texto compactado completo inclui o texto compactado ALÉM da chave para resolvê-lo.
    • Portanto, é preciso contabilizar o número total de caracteres da mensagem mais o número total de caracteres da chave para ver o nível de compactação em relação ao original.

Transição

Agora vocês vão tentar compactar algumas coisas por conta própria.

Use o widget de compactação de textos

[][7]

O vídeo explica um pouco sobre a compactação em geral – a diferença entre [lossless compression][8] e [lossy compression][9]. A aula de hoje é sobre [lossless compression][10]. Vamos fazer compactação com perda de dados uma ou duas aulas depois de analisar a codificação de imagens.

[/][7]

[][11]

Escolha do professor: apresente o vídeo para a turma toda ou deixe que os alunos o assistam no Code Studio. Há vantagens e desvantagens em cada escolha.

Opção a considerar: disponibilize a ferramenta de compactação de textos aos alunos ANTES de apresentar o vídeo. Pode ser que os alunos fiquem mais receptivos a algumas das informações do vídeo se já tiverem tentado usar a ferramenta antes.

Comunicação e colaboração: para desenvolver a comunicação e a colaboração entre os alunos, inclua uma das situações a seguir em sala de aula:

  • Peça aos alunos que receberam o mesmo poema que comparem os resultados ou sentem na mesma parte da sala.
  • Promova um pouco de competição amigável – tomando cuidado para não deixar surgir a competição negativa – para ver qual dupla consegue compactar mais um poema. Use um poema que nenhum aluno tenha compactado ainda.
  • Para cada poema, peça ao grupo (ou grupos) que o fez que identifique o melhor da turma e o registre no quadro ou em algum lugar onde as pessoas possam vê-lo.
    • Apresente à turma o objetivo de aumentar o máximo possível a porcentagem de compactação dos quatro poemas.
  • Os grupos com as melhores porcentagens de compactação podem ser chamados para compartilhar sua estratégia com a turma.

Talvez os alunos relutem em compartilhar se acharem que não obtiveram os melhores resultados, mas os alunos devem ver o trabalho dos outros e oferecer conselhos e estratégias.

[/][11]

[][12] [video-text-compression][13]

[][14]

[][15]

  • O vídeo explica a compactação
  • Demonstra o uso da ferramenta de compactação de textos.
  • OBSERVAÇÃO: este vídeo é exibido automaticamente quando os alunos acessam o estágio de compactação de textos no Code Studio.
  • Divida os alunos em duplas
  • Atribua a cada dupla um dos poemas fornecidos e desafie-as a compactar o poema o máximo possível trabalhando em dupla.
  • Entregue ou coloque no quadro instruções simples para que os alunos possam acompanhar.
    • Desafio: compacte o poema atribuído o máximo possível.
    • Compare com outros grupos para ver se você consegue fazer melhor.
    • Tente desenvolver uma estratégia geral que leve a uma boa compactação.

[][16]

  • Depois de algum tempo, peça às duplas que fizeram o mesmo poema que se reúnam para comparar os esquemas. Como grupo, o trabalho desses alunos é chegar à melhor compactação do poema para a classe.
  • Como opção: você pode distribuir [Text Compression (opcional)][17], que também explica as instruções e define tarefas para os alunos. Pode funcionar bem como uma atividade ou avaliação extraclasse.

Encerramento (10 min)

Discuss properties and challenges with compression

Ask groups to pause to discuss the questions at the end of the activity.

Prompts:

  • "What makes doing this compression hard?"

    • Invite responses. Some of these issues should surface: You can start in lots of different ways. Early choices affect later ones. Once you find one set of patterns, others emerge.
    • There is a tipping point: you might be making progress compressing, but at some point the scale tips and the dictionary starts to get so big that you lose the benefit of having it. But then you might start re-thinking the dictionary to tweak some bits out.
  • "Do we think that these compression amounts that we’ve found are the the best? Is there a way to know what the best compression is?"

    • We probably don’t know what’s best.
    • There are so many possibilities it’s hard to know. It turns out the only way to guarantee perfect compression is brute force. This means trying every possible set of substitutions. Even for small texts this will take far too long. The “best” is really just the best we’ve found so far.
  • "But is there a process a person can follow to find the best (or a pretty good) compression for a piece of text?"

    • Yes, but it’s imprecise -- you might leave this as a lingering question.

Aprendizagem complementar

Mundo Real: Compactação em zip

  • Experimente o zip usando arquivos de texto com conteúdo diferente. Os resultados com arquivos pequenos são tão bons quanto com arquivos grandes? (Em computadores Mac, no Finder, escolha “Obter informações” de um arquivo para ver o verdadeiro número de bytes do arquivo, pois a tela do Finder mostra 4 KB em qualquer arquivo com menos que isso.)
    • Aviso: os resultados podem variar. O zip funciona muito bem com textos, mas talvez não compacte outros arquivos muito bem porque eles já estão compactados ou não têm os mesmos tipos de padrão incorporados que os documentos de texto.

Desafio: pesquise sobre o algoritmo LZW

  • A compactação em .zip se baseia no [LZW Compression Scheme][0].

  • Embora a ideia por trás da ferramenta de compactação de textos seja parecida com a do algoritmo LZW (zip), o rastreamento do caminho de compactação e descompactação é um tanto quanto desafiador. Um excelente projeto de extensão para algumas pessoas seria aprender mais sobre o LZW e o que acontece ao longo desse algoritmo.

Adesão a Normas

Ver adesão completa do curso

Normas CSTA K-12 para Ciência da Computação (2011)

CL - Colaboração
  • CL.L2:3 - Colaborar com colegas, especialistas e outras pessoas usando práticas colaborativas, como programação em pares, trabalho em equipes de projeto e participação em atividades de aprendizado ativo em grupo.
CPP - Programação e Prática Computacional
  • CPP.L2:4 - Demonstrar compreensão de algoritmos e sua aplicação prática.
CT - Pensamento Computacional
  • CT.L2:9 - Interagir com modelos e simulações de conteúdo específico (por exemplo: ecossistemas, epidemias, dinâmica molecular) para apoiar o aprendizado e pesquisas.
  • CT.L3B:8 - Usar modelos e simulações para ajudar a formular, aperfeiçoar e testar hipóteses científicas.
  • CT.L3B:9 - Analisar dados e identificar padrões por meio de modelagem e simulação.

Princípios de Ciência da Computação

2.1 - A variety of abstractions built upon binary sequences can be used to represent all digital data.
2.1.1 - Descreva a variedade de abstrações usadas para representar dados. [P3]
  • 2.1.1A - Os dados digitais são representados por abstrações em diferentes níveis.
  • 2.1.1B - No nível mais baixo, todos os dados digitais são representados por bits.
  • 2.1.1C - Em um nível mais alto, os bits são agrupados para representar abstrações, incluindo, entre outros, números, caracteres e cores.
2.2 - Multiple levels of abstraction are used to write programs or create other computational artifacts
2.2.1 - Desenvolva uma abstração ao escrever um programa ou criar outros artefatos computacionais. [P2]
  • 2.2.1B - Uma abstração extrai características comuns de exemplos específicos a fim de generalizar conceitos.
3.1 - People use computer programs to process information to gain insight and knowledge.
3.1.1 - Use computadores para processar informações, encontrar padrões e testar hipóteses sobre informações processadas digitalmente para obter ideias e conhecimento. [P4]
  • 3.1.1A - Os computadores são usados de maneira iterativa e interativa ao processar informações digitais para fazer descobertas e adquirir conhecimentos.
  • 3.1.1D - É possível fazer descobertas e adquirir conhecimentos por meio da interpretação e transformação de informações representadas digitalmente.
  • 3.1.1E - Podem surgir padrões quando os dados são transformados usando ferramentas computacionais.
3.1.2 - Colabore ao processar informações para obter ideias e conhecimento. [P6]
  • 3.1.2A - A colaboração é uma parte importante da solução de problemas baseados em dados.
  • 3.1.2B - A colaboração facilita a solução de problemas computacionais pela aplicação de várias perspectivas, experiências e conjuntos de habilidades.
  • 3.1.2C - A comunicação entre os participantes que trabalham em problemas baseados em dados permite fazer mais descobertas e adquirir conhecimentos aprimorados.
  • 3.1.2D - A colaboração para o desenvolvimento de hipóteses e perguntas e para testar hipóteses e responder a perguntas sobre dados ajuda os participantes a fazerem descobertas e adquirirem conhecimentos.
3.1.3 - Explique as ideias e o conhecimento obtidos de dados processados digitalmente ao usar as visualizações apropriadas, notações e linguagem precisa. [P5]
  • 3.1.3A - Ferramentas e software de visualização podem comunicar informações sobre dados.
  • 3.1.3E - A interatividade com os dados é um aspecto da comunicação.
3.3 - There are trade offs when representing information as digital data.
3.3.1 - Analyze how data representation, storage, security, and transmission of data involve computational manipulation of information. [P4]
  • 3.3.1A - As representações de dados digitais envolvem vantagens e desvantagens relacionadas a preocupações com o armazenamento, a segurança e a privacidade.