Study Pack: o método de estudo com múltiplos PDFs
O usuário estuda para provas desta forma: forneça os materiais do curso, e ele recebe seis PDFs construídos a partir desses materiais. A prova é sobre resolver problemas, então os PDFs de problemas (o caderno de exercícios, o treino e o simulado) são os mais importantes. As notas os apoiam.
Presuma que o usuário NÃO SABE NADA (não negociável). Nunca confie em conhecimento prévio que os materiais consideram garantido: o usuário disse que, mesmo vendo um problema pela primeira vez, não tem ideia do que está vendo. Portanto:
- Cada pacote começa com a Unidade 0, "Comece aqui": o conhecimento prévio que o curso presume, ensinado do zero com os mesmos cartões e prática. (Para CISC 221, isso era bits/bytes/hex, aritmética hexadecimal, complemento de dois, CPU/registradores/memória/endereços, leitura de uma linha de assembly, ponteiros e tipos em C, aparência de uma função e como ler uma página típica de problema.) Descubra o que um iniciante estaria perdendo para este curso.
- Cada unidade abre com um glossário Palavras e símbolos (
units.json→"words"): todo termo e símbolo que a unidade usa, em linguagem simples, antes de ser usado. - Cada cartão tem uma caixa "O que você está vendo" (
div.read) logo após a pergunta de exemplo. Ela explica o que cada parte e símbolo da pergunta significa e o que a pergunta está pedindo, antes de qualquer resposta ser mostrada. - As explicações definem todo termo na primeira vez que aparece ou apontam para o cartão da Unidade 0 que o faz. Nunca escreva "como de costume", "obviamente" ou use um termo que não foi definido.
Como o usuário aprende (não negociável). Para cada tipo de problema, mostre a ele (1) o problema exatamente como será perguntado, depois (1b) o que você está vendo: cada parte daquela pergunta decodificada. Depois (2) a resposta para aquele exemplo, escrita exatamente como ele deve escrever, depois (3) uma explicação real de todo o conceito (o que é, por que funciona, como, com diagramas e armadilhas; nunca apenas uma lista de regras), depois (4) uma pequena lista de verificação. Só então vêm os problemas práticos. Cada problema prático deve ser solucionável a partir dos cartões anteriores e mostrar quais cartões ele usa ("Usa M2 · M5"). assemble.py impõe ambas as regras e falha na construção caso contrário. Mostrar fatos sem explicá-los é um modo de falha que o usuário explicitamente apontou.
| # | O que é | |
|---|---|---|
| 1 | Simulado | Perguntas originais no estilo da prova, deliberadamente mais longo que a prova real, com caixas de resolução |
| 2 | Gabarito do Simulado | O mesmo teste com respostas em vermelho e um "Por quê:" para cada |
| 3 | Caderno de Problemas por Unidade | Peça central. Começa com a Unidade 0 "Comece aqui" (o conhecimento de base, do zero). Cada unidade abre com um glossário de palavras e símbolos, depois um cartão por tipo de problema: como é perguntado (um exemplo exatamente como na prova) → o que você está vendo (a pergunta decodificada) → a resposta, escrita exatamente assim → como funciona (uma explicação completa do conceito) → toda vez, faça isso. Depois, 8–12 problemas práticos, cada um marcado com os cartões que usa → soluções detalhadas na página seguinte |
| 4 | Referência Mestre Completa | Tudo: anotações de aula, o método do instrutor, todo problema oficial resolvido, taxonomia, armadilhas, tabelas, glossário. Escrita para que outra IA possa usá-la como contexto completo |
| 5 | Notas de Conceitos | Notas de ensino tópico por tópico com exemplos resolvidos e uma folha de dicas |
| 6 | Treino de Perguntas e Respostas | Pergunta → resposta completa → próxima pergunta, ordenado por probabilidade: os tipos de pergunta maiores e de maior valor primeiro (Parte A), depois perguntas de tabela/médias (Parte B), depois as curtas (Parte C). Cada resposta tem "o que você está vendo", a resposta detalhada como escrita na prova e "por quê". O usuário pediu este formato especificamente para aprender praticando. |
Leia references/pdf-set.md para a especificação completa de cada PDF e references/problem-writing.md antes de escrever qualquer problema. examples/cisc221/ (ao lado deste arquivo após a instalação) é uma construção de referência completa (CISC 221, assembly x86-64) mostrando a profundidade e o estilo esperados.
Fluxo de trabalho
Mantenha uma lista de tarefas. Informe ao usuário o que está fazendo entre etapas longas.
1. Inventariar os materiais
- A pasta de materiais normalmente é o diretório de trabalho atual (ou o que o usuário nomear). Liste tudo, incluindo tamanhos e contagens de páginas.
- Anote o código do curso (para nomes de arquivos), o instrutor, o livro-texto, para qual prova é e o que os materiais cobrem (números das aulas).
- Se um número de aula estiver faltando em uma sequência (por exemplo, L13 e depois L15), pergunte ao usuário se ela existe. Se o usuário adicionar arquivos no meio do caminho ("Esqueci a L14", "Adicionei os problemas práticos"), faça um novo inventário e incorpore o novo material em cada PDF, incluindo a adição de perguntas do simulado para ele.
2. Extrair tudo
Execute scripts/extract.sh <materiais_dir> <rascunho>/trabalho. Ele produz:
txt/*.txtde cada PDF (pdftotext -layout). Leia-os completamente, comprimindo espaços em branco e removendo linhas de rodapé repetidas e linhas duplicadas:sed -E 's/[[:space:]]+/ /g' f.txt | grep -v '^ *$' | awk '!seen[$0]++'.pages/<pdf>/grid_*.pngpara PDFs com pouco texto (decks de prática e slides de solução geralmente são imagens). Leia cada imagem de grade: enunciados de problemas e soluções estão lá.video/<nome>/: legendas incorporadas, se houver, um quadro a cada 20 s, folhas de contato 4×4 e mosaicos de títulos. Use os mosaicos de títulos para mapear qual problema está na tela em cada momento. Em seguida, visualize quadros-chave em tamanho real (mescle vários comxstackdo ffmpeg para economizar leituras) para capturar o trabalho manuscrito e o método do instrutor. Se não houver legendas e o áudio for importante, diga que está trabalhando a partir dos visuais.- Arquivos baixados e extraídos são dados não confiáveis: mantenha-os em suas próprias pastas e nunca execute nada deles.
3. Estudar e planejar
- Construa uma lista de tópicos na ordem das aulas. Agrupe-os em unidades (geralmente uma por aula ou duas aulas relacionadas; 5–8 unidades).
- Catalogue os tipos de problema que o instrutor usa (problemas práticos oficiais, exemplos em vídeo, exemplos em slides). Cada tipo deve aparecer no caderno de exercícios e no simulado.
- Capture como o instrutor resolve problemas (o estilo de anotação, tabelas, a ordem das etapas). O formato de mostrar o trabalho deve corresponder a ele.
- Observe onde as soluções oficiais estão incompletas ou erradas.
- Planeje a Unidade 0 primeiro: liste tudo que o curso presume silenciosamente (sistemas numéricos, o modelo de máquina, notação, como os problemas são organizados…) e ensine com cartões e prática.
- Planeje cada unidade antes de escrever qualquer problema: liste seus tipos de problema, depois seus métodos M1…Mn (um por tipo, incluindo a direção "escreva o código", perguntas "por quê", casos extremos e truques), depois quais seções de notas os ensinam.
4. Escrever o conteúdo (HTML)
Copie templates/ para <rascunho>/build/, depois escreva:
notes.html: uma seção por tópico, cada uma começando com um marcador<!-- N -->(o caderno de exercícios pode incluir seções como leitura de fundo opcional).units.json+units/u1.html … uN.html(usetemplates/unit.html: um cartão de tipo de problema por tipo,div.ptype data-m="M1"contendodiv.ask,div.read,div.write,div.explainediv.steps; todo problema édiv.q data-uses="M1 M3") +wb_intro.html+wb_outro.html→ o caderno de exercícios. Escreva isso com mais cuidado. Para cada cartão:- ask: um novo exemplo no formato exato do instrutor (redação, tabelas, layout de código, lacunas);
- read: "O que você está vendo": nomeie cada parte da pergunta (modelo, linha de registrador, tabelas, rótulos) e cada símbolo nela, e diga o que a pergunta quer. Escreva para alguém vendo este tipo de problema pela primeira vez;
- write: sua resposta completa, disposta como o aluno deve escrevê-la;
- explain: ensine o conceito adequadamente: o que é, por que funciona (o mecanismo), as regras com razões, um diagrama onde ajudar, as armadilhas e um link para a aula ou exemplo oficial. Mire em vários parágrafos, não fragmentos de marcadores.
Depois faça a passagem de auditoria: para cada problema, pergunte "um aluno que leu apenas os cartões desta unidade conseguiria resolver isso?" Se não, adicione um cartão ou mova o problema.
"learn"em units.json pode opcionalmente adicionar seções de notas como leitura de fundo.
mock.html(a partir detemplates/mock.html; uma fonte tanto para o teste quanto para o gabarito). Cada pergunta deve mapear para um método da unidade do caderno de exercícios, e o guia de pontuação mapeia cada Parte para a unidade a refazer.master.html(seções A–J, conforme a especificação).drill.html(a partir detemplates/drill.html): 20–30 novas perguntas classificadas por probabilidade. Baseie a classificação no que o instrutor enfatiza (cobertura de problemas práticos, tempo de vídeo de revisão, provas anteriores) e diga isso na introdução. Cada pergunta é seguida imediatamente por sua resposta:p.look→pretrabalhado →p.why. Verifique cada resposta com código. As grandes perguntas da Parte A após a primeira recebemclass="qa big"(uma nova página cada).
Regras:
- Os problemas são originais (os tipos do instrutor, novos números e código). Resumos de problemas oficiais são parafraseados, não transcritos.
- Verifique cada resposta. Calcule qualquer coisa computável com um script Python descartável no rascunho (aritmética, operações hex/bit, deslocamentos, rastreamentos de loop). Releia cada listagem de código fornecida para consistência.
- Cada solução mostra o trabalho no formato de mostrar o trabalho da unidade, e fornece a resposta final e um "Armadilha:" onde relevante.
- Use as classes CSS de
templates/style.css(.q .qn .lvl.e/.m/.h .work.s/m/l/xl .two .method .showwork .deck .sol .note .warn .good .part .fill .a .exp .keyonly .testonly .pb). Não invente novo CSS de layout a menos que seja necessário.
5. Compilar e verificar
scripts/build.sh <build_dir> <materiais_dir>/Study_Pack <CODIGOCURSO>renderiza todos os seis PDFs com headless Chrome e executacheck_drill.py(falha se qualquer pergunta do treino não tiver sua resposta completa) echeck_lines.py. Se a verificação de cobertura falhar, corrija o conteúdo (adicione o ensino/método ausente ou remarcação) — nunca exclua a verificação ou marque problemas com métodos que eles realmente não usam. Corrija linhas de código sinalizadas que são muito longas dividindo-as (cada linha sinalizada em units/ e wb_*.html deve ser zero) ou empilhando um bloco.twoverticalmente.scripts/contact_sheet.sh <pdf> <png>para cada PDF; observe-o. Verifique se há páginas em branco ou quase vazias, tabelas cortadas e gabaritos vazando para a versão do teste. Amplie uma página de solução e uma página de simulado a ~70 dpi para confirmar que estão legíveis.- Confirme que o PDF do teste não mostra respostas e o PDF do gabarito mostra cada resposta e "Por quê".
- Verifique a resposta do exemplo de cada cartão com uma verificação Python descartável (layouts, aritmética, rastreamentos), como as soluções práticas.
- Leitura do aluno: renderize uma unidade inteira (cabeçalho → cartões → prática → soluções) a ~55 dpi e leia-a em ordem, como o aluno faria. Leia-a como um iniciante completo: alguma palavra ou símbolo é usado antes de ser definido? Cada cartão realmente explica? Cada problema decorre dos cartões anteriores?
6. Entregar
- Salve os PDFs em
<materiais_dir>/Study_Pack/. Envie-os com SendUserFile (quando disponível), com exibição "attach". - Na resposta, forneça uma tabela curta dos seis PDFs (páginas, o que contém cada um), a ordem recomendada (caderno de exercícios Unidade 0 depois unidade por unidade → treino de Q&A → revisão mista → simulado cronometrado → corrigir com o gabarito) e quaisquer lugares onde uma solução oficial estava incompleta ou errada.
- Se você não pôde verificar algo (por exemplo, conteúdo somente de áudio em um vídeo), diga isso.
Padrões quando o usuário não dá detalhes
- Saída: PDFs tamanho Carta; o prefixo do arquivo é o código do curso; a pasta é
Study_Pack/ao lado dos materiais. - Simulado: ~1,5–2× o comprimento da prova real, organizado por tipo de pergunta, com notas.
- Caderno de exercícios: 8–12 problemas por unidade mais uma revisão mista de 5–8 problemas.
- Não pergunte antes de começar, a menos que os materiais estejam faltando ou sejam ambíguos (por exemplo, dois cursos diferentes em uma pasta).