Dou aulas no primeiro curso de arquitetura de computadores de uma faculdade de artes liberais. O curso é obrigatório para os maiores e menores de ciência da computação. Não temos cursos de engenharia da computação, engenharia elétrica, outros equipamentos de hardware etc. Meu principal objetivo no curso é que os alunos entendam até o nível do portão como os computadores funcionam, que eu acredito que eles aprendem melhor através de um laboratório de hardware e não apenas através de um livro ( Computer Organization and DesignHennessy e Patterson). Meu objetivo secundário é estimulá-los sobre a arquitetura de computadores e aumentar sua empolgação com a ciência da computação. Prepará-los diretamente para a indústria não é um objetivo, embora motivá-los a estudar mais arquitetura de computadores. Geralmente, os alunos não têm experiência em construir nada ou em fazer um curso de laboratório em nível universitário. Normalmente, 10 a 15 alunos fazem o curso por semestre.
Eu tenho ministrado o curso desde 1998 de uma maneira semelhante a como fui ensinado arquitetura de computadores e eletrônica digital no final dos anos 80 no MIT: usando chips DIP TTL em placas de ensaio elétricas. Na primeira tarefa do laboratório de hardware, os alunos constroem um somador completo. Na metade do semestre, eles começaram a construir um computador simples com um conjunto de instruções de 8 bits. Para reduzir a fiação, forneço a eles um PCB com alguns dos componentes eletrônicos (dois flip-flops D, duas LS 181 ALUs de 4 bits conectadas para atuar como uma ALU de 8 bits e um buffer de três estados). No primeiro desses laboratórios, eles derivam os sinais de controle (muito simples) para os dois formatos de instrução e constroem o circuito, inserindo instruções nos interruptores e lendo os resultados das luzes. No segundo dos laboratórios, eles adicionam um contador de programa (2 LS163s) e uma EPROM (queminha pergunta original era sobre antes de mudar para como eu deveria ensinar arquitetura de introdução). No laboratório final, eles adicionam uma instrução de ramificação condicional. Enquanto os alunos passam bastante tempo conectando e depurando, sinto que é aí que ocorre grande parte do aprendizado, e os alunos saem com uma sensação real de realização.
As pessoas deste fórum me disseram, porém, que eu deveria mudar para FPGAs, com os quais não trabalhei antes. Sou engenheiro de software, não engenheiro de computação e agora estou fora da escola há um tempo, mas sou capaz de aprender. Eu não seria capaz de obter muito dinheiro ( talvez alguns milhares de dólares) para substituir nossos treinadores digitais existentes. Nós temos um único analisador lógico.
Dados meus objetivos e restrições, os EEs recomendariam que eu seguisse minha abordagem atual de mudar para uma baseada em FPGAs? Neste último caso, você pode me dar alguma indicação de materiais com os quais me educar?
Conforme solicitado, aqui está um link para o currículo e as atribuições do laboratório .
Adição: Sim, também é um curso de lógica digital. Quando cheguei à minha faculdade, os alunos foram obrigados a fazer um semestre de cada um de arquitetura de computadores e lógica digital, e eu os combinei em um único semestre. Claro, isso é uma afirmação sobre o passado, não o futuro.