Skip to content

Desenvolvimento Back-end: Servidores e LinguagensAtividades e Estratégias de Ensino

A aprendizagem ativa é essencial neste tópico porque os conceitos de back-end são abstratos e dinâmicos. Os alunos precisam de manipular servidores locais, observar respostas em tempo real e identificar erros de lógica ou segurança, o que torna a experiência tangível e memorável. As atividades práticas ajudam a consolidar a separação entre cliente e servidor, muitas vezes confundida por analogias superficiais.

12° AnoInovação Digital e Pensamento Computacional Avançado4 atividades40 min60 min

Objetivos de Aprendizagem

  1. 1Comparar o fluxo de requisições e respostas entre um cliente e um servidor web, identificando os protocolos envolvidos.
  2. 2Analisar as características de Python (com Flask/Django), Node.js (com Express) e PHP (com Laravel/Symfony) para determinar a sua adequação a diferentes cenários de back-end.
  3. 3Explicar os princípios fundamentais da segurança no desenvolvimento back-end, incluindo validação de entrada, autenticação e autorização.
  4. 4Projetar um esboço de arquitetura para uma aplicação web simples, definindo os componentes do lado do servidor e as suas interações.
  5. 5Avaliar os riscos de segurança associados a vulnerabilidades comuns em aplicações web (e.g., SQL Injection, XSS) e propor medidas de mitigação.

Pretende um plano de aula completo com estes objetivos? Gerar uma Missão

45 min·Pequenos grupos

Simulação de Julgamento: Servidor Node.js Básico

Instale Node.js e crie um ficheiro server.js com endpoints GET e POST usando Express. Teste requisições com ferramentas como Thunder Client no VS Code. Registe respostas no ecrã e discuta erros comuns em grupo.

Preparação e detalhes

Como um servidor web processa requisições e envia respostas aos clientes?

Sugestão de Facilitação: Durante a Simulação: Servidor Node.js Básico, peça aos alunos que anotem cada passo da configuração e teste de uma rota GET, para depois comparar com os erros comuns que surgem em PHP ou Python.

Setup: Secretárias reorganizadas de acordo com a disposição de um tribunal

Materials: Cartões de personagem/papéis, Dossiês de provas e evidências, Formulário de veredito para os juízes

AnalisarAvaliarCriarTomada de DecisãoConsciência Social
50 min·Pares

Comparação: Scripts em Python e PHP

Escreva scripts idênticos para processar um formulário: um em Flask (Python) e outro em PHP puro. Execute num servidor local XAMPP ou similar. Compare tempo de execução e legibilidade, registando observações numa tabela partilhada.

Preparação e detalhes

Compare as características de diferentes linguagens de programação back-end (e.g., Python, Node.js, PHP).

Sugestão de Facilitação: Na Comparação: Scripts em Python e PHP, organize os alunos em pares para implementarem a mesma funcionalidade em ambas as linguagens e medirem o tempo de resposta com uma ferramenta simples como o console.

Setup: Disposição flexível para permitir a mudança de grupos

Materials: Textos de apoio para os grupos de especialistas, Guião para tomada de notas, Organizador gráfico para o resumo final

CompreenderAnalisarAvaliarCompetências RelacionaisAutogestão
40 min·Pequenos grupos

Desafio da Linha do Tempo: Injeção SQL Simulada

Configure uma base de dados SQLite simples com um servidor Python. Introduza inputs maliciosos via POST e observe falhas de segurança. Corrija com prepared statements e valide o impacto em discussões de grupo.

Preparação e detalhes

Explique a importância da segurança no desenvolvimento back-end para proteger dados sensíveis.

Sugestão de Facilitação: No Desafio: Injeção SQL Simulada, forneça uma base de dados pré-populada e peçam aos alunos que tentem aceder a dados não autorizados, documentando as tentativas e os resultados.

Setup: Parede longa ou espaço amplo no chão para a construção da linha do tempo

Materials: Cartões de eventos com datas e descrições, Base da linha do tempo (fita adesiva ou rolo de papel), Setas de ligação ou cordel, Cartões com tópicos para debate

RecordarCompreenderAnalisarAutogestãoCompetências Relacionais
60 min·Pequenos grupos

Rotação por Estações: Fluxo Cliente-Servidor

Crie estações com diferentes linguagens: Node.js para API, Python para autenticação, PHP para sessões. Grupos rotacionam, enviam requisições via curl e analisam logs do servidor.

Preparação e detalhes

Como um servidor web processa requisições e envia respostas aos clientes?

Sugestão de Facilitação: Na Rotação: Fluxo Cliente-Servidor, crie estações físicas (cliente, servidor, rede) e peça aos alunos que registem o percurso de uma requisição em papel, destacando onde cada componente atua.

Setup: Mesas ou secretárias organizadas em 4 a 6 estações distintas pela sala

Materials: Cartões com instruções para cada estação, Materiais específicos por atividade, Cronómetro para gestão da rotação

RecordarCompreenderAplicarAnalisarAutogestãoCompetências Relacionais

Ensinar Este Tópico

Ensine este tópico através de ciclos de experimentação e reflexão. Comece com uma breve explicação teórica (10-15 minutos), depois passe para atividades práticas em que os alunos falham, corrigem e discutem os erros. Evite aulas expositivas longas sobre segurança ou linguagens, pois a teoria só faz sentido quando aplicada. Use analogias simples, como comparar um servidor a uma cozinha de restaurante, onde os pedidos (requisições) são processados e devolvidos como refeições (respostas).

O Que Esperar

No final destas atividades, espera-se que os alunos consigam configurar um servidor básico, distinguir as características de linguagens back-end, identificar vulnerabilidades comuns e explicar o fluxo de uma requisição HTTP. O sucesso é medido pela capacidade de aplicar estes conceitos em cenários novos, como depurar um erro de rota ou propor soluções para um problema de segurança.

Estas atividades são um ponto de partida. A missão completa é a experiência.

  • Guião completo de facilitação com falas do professor
  • Materiais imprimíveis para o aluno, prontos para a aula
  • Estratégias de diferenciação para cada tipo de aluno
Gerar uma Missão

Atenção a estes erros comuns

Erro comumDurante a Simulação: Servidor Node.js Básico, watch for students who assume que o back-end e o front-end são intercambiáveis porque ambos usam JavaScript.

O que ensinar em alternativa

Peça aos alunos que testem uma requisição GET sem lógica back-end e observem a falha na resposta. Depois, peça-lhes que adicionem uma rota simples e comparem a estrutura do código com um ficheiro HTML front-end, destacando a separação de responsabilidades.

Erro comumDurante a Comparação: Scripts em Python e PHP, watch for students who claim que todas as linguagens back-end têm o mesmo desempenho e segurança.

O que ensinar em alternativa

Organize um benchmark simples: peça aos alunos que criem um endpoint que devolva uma lista de 1000 itens com e sem caching, medindo o tempo de resposta em ambas as linguagens. Discuta por que o Node.js pode ser mais eficiente para I/O e o Python para processamento intensivo de dados.

Erro comumDurante o Desafio: Injeção SQL Simulada, watch for students who believe que os servidores são seguros por padrão se não receberem inputs maliciosos.

O que ensinar em alternativa

Peça aos alunos que tentem aceder a uma tabela restrita usando uma query como ' OR '1'='1. Quando o ataque falhar, mostre-lhes como um simples filtro de inputs (como remover aspas) pode prevenir a vulnerabilidade, reforçando a importância da sanitização.

Ideias de Avaliação

Bilhete de Saída

Após a Simulação: Servidor Node.js Básico, entregue a cada aluno um pequeno cartão para escreverem uma requisição HTTP simulada (ex: GET /livros/456) e descreverem em duas frases o que esperam que o servidor devolva como resposta. Inclua uma pergunta sobre a importância de validar inputs no servidor.

Verificação Rápida

Durante a Comparação: Scripts em Python e PHP, projete um pequeno cenário: 'Uma aplicação de blog precisa de uma funcionalidade para listar todos os posts. Qual linguagem (Python com Flask ou PHP nativo) escolheria e porquê? Justifique em 3-4 frases, considerando facilidade de manutenção e desempenho.'

Questão para Discussão

Após o Desafio: Injeção SQL Simulada, coloque a seguinte questão no quadro: 'Imagine que está a desenvolver um sistema de registo de utilizadores. Quais são os dois principais riscos de segurança no back-end e que medidas pode tomar para os mitigar?' Dê 5 minutos para reflexão individual e depois abra para discussão em pequenos grupos.

Extensões e Apoio

  • Challenge: Peça aos alunos que implementem um servidor em Node.js com autenticação básica usando JWT, comparando-o com uma solução em Python com Flask.
  • Scaffolding: Para alunos que não consigam configurar um servidor local, forneça um template pré-configurado com instruções passo a passo para focarem na lógica da rota.
  • Deeper: Explore a diferença entre servidores síncronos e assíncronos, pedindo aos alunos que criem um servidor em Node.js com eventos e comparem o desempenho com um em Python usando threads.

Vocabulário-Chave

Servidor WebUm programa ou dispositivo que processa requisições de clientes (geralmente navegadores web) e envia de volta respostas, como páginas HTML ou dados.
Requisição HTTPUma mensagem enviada por um cliente para um servidor web, solicitando uma ação ou um recurso específico, como a obtenção de uma página web.
Resposta HTTPUma mensagem enviada por um servidor web de volta a um cliente em resposta a uma requisição, contendo o status da requisição e os dados solicitados.
API RESTfulUm conjunto de regras e convenções para construir aplicações web, onde os recursos são expostos através de URLs e manipulados usando métodos HTTP padrão.
MiddlewareFunções que são executadas no ciclo de vida de uma requisição/resposta numa aplicação web, frequentemente usadas para autenticação, logging ou manipulação de dados.

Preparado para lecionar Desenvolvimento Back-end: Servidores e Linguagens?

Gere uma missão completa com tudo o que precisa

Gerar uma Missão