Skip to content
Aplicações Informáticas B · 12.º Ano

Ideias de aprendizagem ativa

Desenvolvimento Back-end: Servidores e Linguagens

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.

Aprendizagens EssenciaisDGE: Secundário - Algoritmia e ProgramaçãoDGE: Secundário - Redes e Sistemas de Comunicação
40–60 minPares → Turma inteira4 atividades

Atividade 01

Simulação de Julgamento45 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.

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

Sugestão de FacilitaçãoDurante 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.

O que observarEntregue a cada aluno um pequeno cartão. Peça-lhes para escreverem uma requisição HTTP simulada (e.g., GET /utilizadores/123) e descreverem em duas frases o que esperam que o servidor devolva como resposta. Inclua uma pergunta sobre a importância da segurança na resposta.

AnalisarAvaliarCriarTomada de DecisãoConsciência Social
Gerar Aula Completa

Atividade 02

Método Jigsaw50 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.

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

Sugestão de FacilitaçãoNa 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.

O que observarProjete um pequeno cenário: 'Uma aplicação de e-commerce precisa de uma funcionalidade para adicionar um novo produto ao catálogo. Qual linguagem de back-end (Python, Node.js, PHP) e qual framework (Flask, Express, Laravel) seria mais adequado e porquê? Justifique a sua escolha em 3-4 frases.'

CompreenderAnalisarAvaliarCompetências RelacionaisAutogestão
Gerar Aula Completa

Atividade 03

Desafio da Linha do Tempo40 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.

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

Sugestão de FacilitaçãoNo 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.

O que observarColoque a seguinte questão no quadro: 'Imagine que está a desenvolver um formulário de login. Quais são os dois principais riscos de segurança que deve considerar no lado do servidor e que medidas pode tomar para os mitigar?'. Dê 5 minutos para reflexão individual e depois abra para discussão em pequenos grupos.

RecordarCompreenderAnalisarAutogestãoCompetências Relacionais
Gerar Aula Completa

Atividade 04

Rotação por Estações60 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.

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

Sugestão de FacilitaçãoNa 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.

O que observarEntregue a cada aluno um pequeno cartão. Peça-lhes para escreverem uma requisição HTTP simulada (e.g., GET /utilizadores/123) e descreverem em duas frases o que esperam que o servidor devolva como resposta. Inclua uma pergunta sobre a importância da segurança na resposta.

RecordarCompreenderAplicarAnalisarAutogestãoCompetências Relacionais
Gerar Aula Completa

Algumas notas sobre lecionar esta unidade

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).

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.


Atenção a estes erros comuns

  • Durante 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.

    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.

  • Durante 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.

    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.

  • Durante 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.

    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.


Metodologias usadas neste resumo