Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

DESAFIO: HORA DA PRÁTICA

Apresentação da Atividade

Ao iniciar este módulo, apresentei como projeto a automatização do processo de Avaliação Formativa da Aprendizagem (AFA), utilizado pela escola para acompanhar o desenvolvimento acadêmico, comportamental e socioemocional dos estudantes.

Inicialmente, o objetivo era automatizar a consolidação dos formulários preenchidos pelos professores, calcular as pontuações positivas e negativas e gerar a nota final dos alunos. Contudo, à medida que avancei nos estudos de Python e Ciência de Dados, percebi que os conceitos aprendidos poderiam contribuir para resolver problemas mais amplos da gestão pedagógica.

O projeto evoluiu de uma simples automação de planilhas para uma proposta de Plataforma Inteligente de Gestão, Análise e Comunicação do AFA, incorporando dashboards para coordenação, monitoramento da participação dos avaliadores, identificação de estudantes invisíveis pedagogicamente, comunicação automática com famílias, geração de relatórios individuais e produção de indicadores para tomada de decisão baseada em dados.

A construção dessa solução está sendo realizada com apoio da Inteligência Artificial, utilizada como mediadora da aprendizagem, auxiliando na compreensão dos conceitos de programação e na modelagem da arquitetura do sistema.


Resumo Sintético do Projeto

A plataforma proposta deverá ser capaz de:

  • importar dados dos formulários do AFA;
  • consolidar registros positivos e negativos;
  • calcular automaticamente a nota final;
  • identificar estudantes em atenção;
  • identificar estudantes invisíveis pedagogicamente;
  • identificar estudantes sem registros;
  • gerar dashboards para coordenação;
  • monitorar a participação dos avaliadores;
  • gerar relatórios para professores;
  • gerar relatórios para estudantes e famílias;
  • enviar notificações automáticas via ClassApp;
  • produzir análises qualitativas apoiadas por Inteligência Artificial.

O objetivo é transformar um processo manual de atribuição de pontos em um sistema de inteligência pedagógica baseada em dados.


Aplicação dos Conceitos da Aula

1. Estatísticas Gerais dos Registros do AFA

Utilizando funções embutidas como sum(), len(), max() e min(), podemos gerar indicadores iniciais da turma.

registros = [29, 27, 26, 25, 23, 22, 20, 18, 17, 15]

quantidade_estudantes = len(registros)
maior_registro = max(registros)
menor_registro = min(registros)
total_registros = sum(registros)

print(
f"A turma possui {quantidade_estudantes} estudantes analisados. "
f"O maior número de registros foi {maior_registro}, "
f"o menor foi {menor_registro} e o total de registros foi {total_registros}."
)

2. Função para Calcular a Nota Final do AFA

Aplicação de funções com retorno.

def calcular_afa(pontos_positivos, pontos_negativos):
    nota_final = pontos_positivos - pontos_negativos
    return nota_final

print(calcular_afa(8.5, 1.2))

3. Identificação Automática de Estudantes em Atenção

Aplicação de funções para apoiar intervenções pedagógicas.

pontuacoes = [8.5, 7.0, 5.5, 9.0, 4.8, 6.3, 3.9]

def estudantes_em_atencao(lista):
    atencao = []

    for nota in lista:
        if nota < 6:
            atencao.append(nota)

    return atencao

resultado = estudantes_em_atencao(pontuacoes)

print(resultado)

4. Aplicação de Bônus Utilizando Função Lambda

Exemplo de bonificação para estudantes que participaram de olimpíadas ou eventos acadêmicos.

notas_afa = [7.5, 8.2, 9.0, 6.8, 8.5]

notas_atualizadas = list(
    map(
        lambda nota: nota + 0.3,
        notas_afa
    )
)

print(notas_atualizadas)

Saída esperada:

[7.8, 8.5, 9.3, 7.1, 8.8]

Conclusão

Os conceitos estudados nesta etapa do curso — funções embutidas, criação de funções, retorno de valores, funções lambda e transformação de listas com map() — foram incorporados diretamente ao desenvolvimento da Plataforma Inteligente de Gestão, Análise e Comunicação do AFA.

Dessa forma, a aprendizagem deixou de ser apenas um exercício de programação e passou a contribuir para a construção de uma solução real de Ciência de Dados aplicada à Educação, capaz de apoiar professores, estudantes, famílias e gestores na tomada de decisões pedagógicas baseadas em evidências.

1 resposta

Olá, Patricia. Como vai?

É simplesmente fantástico ver a evolução do seu projeto! Transformar uma automação de planilhas isoladas em uma proposta completa de Plataforma Inteligente de Gestão, Análise e Comunicação do AFA mostra exatamente o papel da Ciência de Dados: gerar inteligência e valor estratégico a partir de dados brutos. No cenário educacional, isso se traduz em um acompanhamento muito mais humano, justo e preditivo para os alunos.

A aplicação prática que você fez dos conceitos da aula (funções embutidas, funções personalizadas, loops, condicionais e expressões lambda com map) ficou impecável e roda perfeitamente.

Para somar ao seu excelente trabalho e trazer insights de arquitetura de código pensando no crescimento dessa plataforma, preparei algumas sugestões práticas:


1. Refinando a Identificação de Estudantes em Atenção

Na sua função estudantes_em_atencao, você extrai as notas menores que 6. Pensando na tomada de decisão da coordenação, apenas saber a nota não permite agir diretamente, pois não sabemos quem tirou essa nota.

Uma excelente evolução para o sistema do AFA é trabalhar com dicionários (ou estruturas de chave-valor), associando o nome do estudante à sua respectiva nota:

# Lista de dicionários representando os registros dos alunos
alunos_afa = [
    {"nome": "Ana", "nota": 8.5},
    {"nome": "Bruno", "nota": 5.5},
    {"nome": "Carlos", "nota": 4.8},
    {"nome": "Daniela", "nota": 9.0}
]

def filtrar_estudantes_em_atencao(lista_alunos):
    # Retorna uma lista contendo apenas os dados dos alunos com nota menor que 6
    return [aluno for aluno in lista_alunos if aluno["nota"] < 6]

resultado = filtrar_estudantes_em_atencao(alunos_afa)
print(resultado)
# Saída: [{'nome': 'Bruno', 'nota': 5.5}, {'nome': 'Carlos', 'nota': 4.8}]

2. Protegendo a Função de Bônus (Lambda)

A aplicação da função lambda nota: nota + 0.3 com o map() ficou excelente para o cálculo de bonificações. No entanto, em sistemas de notas reais, precisamos garantir uma regra de negócio importante: a nota final nunca pode ultrapassar o teto máximo (10.0).

Podemos ajustar a lógica da função lambda utilizando uma estrutura condicional em linha (ternary operator) para evitar que um aluno que já tinha nota 9.9 termine com 10.2:

notas_afa = [7.5, 9.9, 9.0, 6.8, 8.5]

# Se a nota + 0.3 passar de 10.0, fixamos em 10.0. Caso contrário, aplica o bônus normalmente.
notas_atualizadas = list(
    map(
        lambda nota: 10.0 if nota + 0.3 > 10.0 else nota + 0.3,
        notas_afa
    )
)
print(notas_atualizadas)

3. Próximo Passo: Rastreando os "Estudantes Invisíveis"

Como você mencionou o excelente conceito de identificar alunos invisíveis pedagogicamente (aqueles com pouquíssimos ou nenhum registro), as funções de agregação que você aprendeu serão suas maiores aliadas. Quando você avançar para o uso de estruturas como dicionários aninhados ou tabelas do Pandas, poderá criar funções que contam a quantidade de interações por aluno e filtram aqueles cujo len(registros) == 0.

Seu projeto AFA tem um potencial enorme e a estrutura do seu código demonstra que você está construindo uma base de programação extremamente sólida. Continue compartilhando os passos dessa automação inteligente por aqui!

Espero que possa ter lhe ajudado!