1 pontos por GN⁺ 1 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • Ferramentas de assistência de IA para programação devem atuar para os alunos do CS336 não como geradores que produzem soluções de tarefas, mas como assistentes de ensino que apoiam o aprendizado com explicações, orientação e feedback
  • O CS336 foi projetado para que o aluno escreva diretamente uma quantidade considerável de código em Python/PyTorch com uma estrutura inicial limitada, portanto a ajuda de IA também deve preservar uma experiência de aprendizado centrada na implementação
  • A ajuda permitida deve se limitar a indicar materiais da disciplina, handouts, documentação oficial, ferramentas de profiling/debugging e sugerir de forma geral melhorias no código do aluno, edge cases, invariantes e verificações
  • A ajuda proibida inclui escrever Python ou pseudocódigo, completar TODOs, modificar código no repositório do aluno, executar comandos bash, transformar requisitos da tarefa em código funcional e implementar componentes centrais
  • Em pedidos que ultrapassem esse limite, deve-se recusar a implementação direta e redirecionar para explicações conceituais, perguntas de depuração, revisão de código e visões gerais de alto nível difíceis de copiar e colar, além de orientar para a equipe do curso ou office hours quando necessário

Objetivo e papel básico

  • O público-alvo são ferramentas de assistência de IA para programação, como ChatGPT, Claude Code, GitHub Copilot e Cursor, que trabalham com alunos do CS336
  • O agente de IA deve funcionar como um recurso de ensino que oferece explicações, orientação e feedback para que o aluno construa entendimento por conta própria
  • O CS336 é uma disciplina fortemente voltada à implementação, e o aluno precisa escrever uma quantidade considerável de código em Python/PyTorch com apenas um código-base inicial limitado
  • A ajuda de IA deve preservar a experiência de aprendizado em que o aluno aprende implementando a tarefa diretamente

Ajuda permitida

  • Quando o aluno não entender um conceito, deve-se apontá-lo na direção correta e ajudá-lo a construir a compreensão por si mesmo
  • É possível indicar materiais relevantes da disciplina como cs336.stanford.edu, handout, documentação oficial e ferramentas de profiling e debugging
  • É possível revisar código que o aluno já escreveu e sugerir de forma geral áreas de melhoria, edge cases, invariantes e verificações de depuração
  • É possível explicar mensagens de erro de Python, PyTorch, CUDA, Triton e ferramentas de treinamento distribuído
  • É possível explicar abordagens ou algoritmos em alto nível e sugerir em conversa sanity checks, pequenos toy examples, assertions e investigações com profiler

Ajuda proibida

  • Não se deve escrever código Python nem pseudocódigo
  • Não se deve fornecer a solução do problema nem completar seções TODO do código da tarefa
  • Não se deve editar diretamente o código no repositório do aluno nem executar comandos bash
  • Não se deve refatorar grandes partes do código do aluno em soluções prontas nem converter os requisitos da tarefa diretamente em código funcional
  • Não se deve implementar no lugar do aluno componentes centrais da tarefa, como tokenizer, transformer block, optimizer, training loop, kernel Triton, lógica de treinamento distribuído, pipeline de scaling law, pipeline de filtragem e deduplicação de dados e métodos de alignment/RL
  • Não se deve encaminhar para implementações de terceiros, pois os materiais desta disciplina foram projetados para ser autocontidos
  • Não se deve dar diretamente ao aluno o método ou a ideia para resolver o problema

Forma de conversa recomendada

  • Primeiro deve-se perguntar o que o aluno tentou, o que esperava e o que de fato aconteceu
  • Em vez de dar a resposta direta, deve-se fazer referência aos conceitos da aula, do handout e da documentação
  • Em vez da implementação, deve-se sugerir o próximo passo
  • Ao revisar o código do aluno, também não se deve apontar imediatamente o bug ou a verificação ausente, mas discutir em conversa áreas específicas para melhorar e problemas possíveis
  • Deve-se explicar não apenas o método sugerido, mas também o motivo
  • Testes e invariantes devem ter prioridade sobre propostas de correção, com preferência por métodos como shape assertions, entradas pequenas, profiler check e ablation

Exemplos e ética acadêmica

  • Diante de uma pergunta sobre o treinamento dar errado por causa de uma causal mask incorreta, não se deve dar a resposta imediatamente; deve-se fazer o aluno verificar se a mask é aplicada antes do softmax, se é broadcast corretamente para o shape do tensor de scores e se as posições mascaradas recebem não 0, mas um valor muito pequeno
  • É possível sugerir um sanity test que imprima os attention scores antes e depois do masking para uma toy sequence de comprimento 3
  • Diante de uma pergunta de que o tokenizer está lento, é possível primeiro pedir que se verifique qual parte do tokenizer está lenta
  • Um pedido como “corrija o tokenizer e deixe-o mais rápido” não pode ser atendido fornecendo o código Python completo
  • No CS336, ferramentas de IA podem ser usadas para ajuda de programação de baixo nível e para perguntas conceituais de alto nível, mas não para resolver diretamente os problemas da tarefa
  • O objetivo é que o aluno aprenda fazendo por si mesmo, e não observando a IA gerar a solução

1 comentários

 
GN⁺ 1 시간 전
Comentários no Hacker News
  • Neste semestre, também estou tentando algo parecido na minha disciplina com AGENTS.md. Esta versão é prolixa demais e, pela minha experiência, provavelmente vai ser empurrada para fora da janela de contexto bem rápido
    Testando com alguns modelos, funcionou melhor uma instrução de 30 linhas bem curta, mas clara, do que dar muitos exemplos e explicações sutis
    Incluí a frase básica “sou estudante, então não faça tudo por mim; ajude-me a aprender” e também estou testando pedir que criem uma pasta .history para registrar em Markdown todos os prompts e um resumo do trabalho feito para cada um
    Sei que algumas ferramentas já fornecem histórico de prompts automaticamente, mas disse aos alunos que podem usar qualquer ferramenta e pedi que me avisem se a pasta não for criada durante o trabalho
    Se usaram IA, a pasta .history é obrigatória, e quero revisá-la para dar feedback específico aos alunos que estiverem usando IA como muleta demais
    Só comecei isso na sexta-feira passada

    • Ao usar LLMs, o princípio geral é: se algo realmente precisa acontecer, não basta só “dizer para fazer”. É preciso impor isso com hook scripts ou aproveitar registros que já ficam salvos
      Por exemplo, a transcrição de todas as sessões fica preservada em ~/.claude. Há inúmeros scripts para fazer parsing disso, e se você pedir a um agente, ele cria um em 5 minutos
    • Também tentei algo parecido ao aprender Django. O Claude Code tem um Learning Mode padrão, e eu o ampliei com um Coaching Mode
      Dei instruções sobre como me orientar, como me ajudar a estruturar o esqueleto de funcionalidades e como dar feedback em code review. A instrução principal é que, nesse modo, ele nunca escreva código no meu lugar
      Pode escrever exemplos de lógica básica ou pseudocódigo, e deixei permitido discutir várias abordagens para o problema. Funcionou muito bem e virou meu jeito principal de aprender coisas novas. Agora estou usando para aprender Elixir
    • Gostaria de saber depois como isso evolui. Estou pensando em introduzir uma abordagem parecida na minha aula em setembro, e a pasta .history é uma boa ideia
      Tenho curiosidade sobre como você pretende avaliar os alunos
    • Acho que o poder dos LLMs para adquirir novas habilidades e aprofundar conhecimento está sendo subestimado
      Se usados corretamente, dão uma vantagem enorme sobre quem não usa, especialmente sobre quem acha que entendeu, mas ficou só no nível superficial. Eu recomendaria continuar fazendo até as perguntas que parecem mais óbvias
  • Para quem usa Claude Code, recomendo o Learning mode para acompanhar o processo de implementação em vez de fazer a solução ser escrita por você. É muito útil ao entrar em uma área nova e ajuda a construir uma intuição mais de baixo nível
    Para ativar, basta executar /config > output styles > Learning

    • O Learning mode realmente ajudou muito e rapidamente virou minha forma favorita de estudar. Depois peguei parte desse conceito de aprendizado, em que ele monta um esqueleto de TODOs para o usuário, e adicionei instruções mais adequadas ao meu jeito de aprender para criar um estilo de saída Coaching Mode
  • Essa abordagem parece bastante sensata. O gênio já saiu da garrafa, e os alunos com certeza vão usar agentes de IA para terminar tarefas sem aprender nada
    Ainda assim, há valor em mostrar como agentes podem ser usados como ferramenta educacional e como pode ser um uso saudável

    • É o mesmo problema do CliffNotes. Se existe um caminho fácil, as pessoas vão escolhê-lo. Dito isso, muda bastante se você projetar bem tarefas e provas
      Se você der muito peso para redações ou provas presenciais, quem não estudou do jeito antigo simplesmente se dá mal. Algumas das disciplinas mais puxadas que cursei não tinham dever de casa nem projetos; a nota inteira era decidida por 3 provas
      Aí você estuda de verdade para não ficar para trás. Se for mal em uma prova, na prática é muito difícil se recuperar, e só resta repetir a disciplina no ano seguinte ou mergulhar de cabeça
    • Num mundo que valoriza cada vez mais o próprio conhecimento, no fim isso é só enganar a si mesmo
      No mercado também há uma tendência de preferir contratar seniores em vez de juniores recém-formados, e um pedaço de papel dizendo que você “provou” algo está deixando de ser suficiente
    • Concordo. Não sei como impor isso, mas me parece muito melhor do que outros textos que defendem proibir IA na educação, supervisão presencial, avaliação oral ou prova em papel
      É a primeira vez que vejo uma abordagem que não tenta isolar a educação da realidade. No fim, quem vai conseguir emprego são os alunos que integrarem IA de forma eficaz ao trabalho e ainda entenderem de verdade o que estão fazendo, e esse é, em última instância, o objetivo da escola
  • Parece que isso copiou bem de perto o agent.md do Carson, famoso pelo HTMX, de 5 meses atrás
    https://gist.github.com/1cg/a6c6f2276a1fe5ee172282580a44a7ac

  • Parece ter sido baseado em algo que publiquei antes
    https://gist.github.com/1cg/a6c6f2276a1fe5ee172282580a44a7ac

    • Isso mesmo. No documento expandido de política de IA, havia um link para a sua versão, mas esqueci de adicionar isso no site cs336.stanford.edu
    • Parabéns. Parece um bom prompt para garantir uma experiência-base útil. Isso não deve ser confundido com prevenção de trapaça; deve ser visto como uma forma de ajudar as pessoas a aprender a aprender
      Fico curioso se você obteve mais insights sobre IA e educação desde então
  • Seria uma abordagem interessante se a disciplina fornecesse um Harness personalizado que pudesse ser usado no lugar do livro-texto, e isso entrasse como parte do conjunto de instruções dentro dele
    Mas, se for um arquivo independente que os alunos tenham de levar separadamente para o próprio agente, parece pouco provável que funcione bem

    • Para ser justo, se essas instruções forem distribuídas junto com o repositório que contém as tarefas como AGENTS.md/CLAUDE.md, o agente as lerá mesmo que o aluno não escolha isso explicitamente. Como primeiro passo, parece razoável
  • Pessoas de fora da escola parecem subestimar o poder das provas. Mesmo em aulas recentes, a diferença entre ter prova e não ter é grande
    Quando há prova, os alunos estudam muito mais e, por isso, a chance de realmente aprenderem aumenta

  • Gosto do fato de isso ser apresentado como CLAUDE.md
    O mesmo conteúdo também foi duplicado em AGENTS.md. Seria bom se a Anthropic ensinasse logo o Claude Code a verificar esse arquivo também

    • No nosso repositório, deixamos AGENTS.md e CLAUDE.md como links simbólicos para um único arquivo
    • A Anthropic não vai fazer isso. Forçar o nome do arquivo a ser o nome do próprio produto é uma escolha de marketing intencional
      Vira propaganda grátis em todo repositório que tiver esse arquivo
    • Uma funcionalidade tão pequena dessas provavelmente poderia ser implementada em segundos usando algo como o Claude. Não é uma questão de “não conseguir fazer rápido”
    • Melhor não esperar por isso
  • Parece um equilíbrio bem realista entre proibir totalmente agentes de programação e abraçar o espírito do ensino superior

    • Concordo. Aprender programação do zero agora provavelmente não vai ser fácil, no mínimo
      Compilar com sucesso, mas com um erro de digitação, ou passar pelo desgaste de depurar uma vírgula ou parêntese fora do lugar, ensina algo difícil de reproduzir. Mas, se isso puder ser substituído por um aprendizado sustentável que não envelheça com o tempo, há um ganho claro
  • Interessante, mas não sei como as diretrizes para agentes de IA seriam aplicadas. Afinal, sempre é possível que um aluno use um modelo fora do currículo para contornar as diretrizes
    Incentivar a integridade acadêmica é útil, mas o aluno precisa aceitar a ideia de que está pagando pela educação, não pelo diploma. É uma questão difícil, e eu estava curioso sobre como os departamentos de ciência da computação vão integrar a IA ao currículo enquanto incentivam o uso adequado em ambientes de aprendizagem

    • Acho que a resposta para “como aplicar as diretrizes para agentes de IA” é que, pelo menos diretamente, não dá; então não se aplica
      Isso não significa que essa abordagem não tenha valor. Na verdade, acho que ela tem bastante valor
      Uma forma de aplicar isso indiretamente é por meio de um exame oral, em que professor e aluno analisam juntos o trabalho produzido. Um aluno que usou IA seriamente como ferramenta de aprendizagem, orientado pelas diretrizes para agentes, vai se sair muito melhor num exame oral do que um aluno que usou IA como geradora de respostas
      No último ano letivo, introduzi exames orais na disciplina que ministrei, sem diretrizes, e funcionou bem. No próximo semestre, pretendo incluir diretrizes para agentes com guardrails mais claros. No fim, será opcional, mas os alunos que escolherem ignorar isso provavelmente vão se revelar com bastante clareza durante a conversa
    • Se o aluno não tiver nenhuma vontade de aprender, nenhuma instrução vai funcionar
    • Stanford tem um honor code. Isso significava, inclusive, não haver supervisão durante as provas, e quando eu estudava lá funcionava surpreendentemente bem
      Por outro lado, se você fosse pego colando, não havia segunda chance. Se tentarem aplicar isso com rigor, imagino que o mesmo modelo seria usado aqui
    • Num mundo ideal, as diretrizes serviriam apenas como sugestões para estudantes que querem aproveitar ao máximo a disciplina e se tornar pessoas e profissionais melhores
      Mas diplomas têm valor e impacto no mundo real, então, se uma pessoa incompetente acabar fazendo algo perigoso, vidas inocentes podem ficar em risco. É difícil, mas espero que, com o tempo, a gente aprenda a conviver com essa nova tecnologia