|
UNIVERSIDADE FEDERAL DE UBERLÂNDIA Av. João Naves de Ávila, 2121 - Bairro Santa Mônica, Uberlândia-MG, CEP 38400-902 |
|
Plano de Ensino
IDENTIFICAÇÃO
Componente Curricular: |
Elementos de Sistemas Computacionais |
||||||||
Unidade Ofertante: |
|||||||||
Código: |
Período/Série: |
Turma: |
|||||||
Carga Horária: |
Natureza: |
||||||||
Teórica: |
Prática: |
Total: |
Obrigatória: |
Optativa: |
|||||
Professor(A): |
Ano/Semestre: |
||||||||
Observações: |
EMENTA
Embasamentos teóricos, projetos e implementações de versões simplificadas de: Lógica e aritmética booleanas; Lógica sequencial; Linguagem de máquina; Arquitetura de computadores; Assembler; Máquina virtual, aritmética de pilha e controle de programas; Linguagem de programação de alto-nível; Compilador, análise sintática e geração de códigos; Sistema operacional; Conceitos adicionais em sistemas computacionais.
JUSTIFICATIVA
Um especialista em computação costumava possuir uma compreensão do todo de como os computadores funcionam já que, antigamente, as interações gerais entre hardware, software, compiladores e o sistema operacional eram simples e transparentes o suficiente para produzir uma imagem coerente das operações de um computador. À medida que as tecnologias de computação modernas se tornam cada vez mais complexas, essa clareza está quase perdida: as idéias e técnicas mais fundamentais da computação estão agora ocultas sob muitas camadas de interfaces obscuras e implementações proprietárias. Uma consequência inevitável dessa complexidade tem sido a especialização, levando às disciplinas de cursos das áreas de computação a cobrir um único aspecto de cada vez. Os sistemas de hardware e software estão intimamente relacionados por meio de uma rede oculta de abstrações, interfaces e implementações baseadas em contrato e o fracasso em ver este empreendimento intrincado em todas as suas interdependências deixa muitos alunos e profissionais com uma sensação desconfortável de que não entendem completamente o que está acontecendo dentro dos computadores. Esta disciplina propõe construir um sistema de computador de uso geral e uma hierarquia de software moderna a partir do zero, sendo essencial para conectar outros conceitos da computação e devolver ao aluno a compreensão do todo sem prejuízo de outras especificidades.
OBJETIVO
Objetivo Geral: |
Acompanhar o estudante na construção de um sistema de computador de uso geral e uma hierarquia de software moderna a partir do zero para consolidar uma compreensão mais abrangente de um sistema computacional. |
Objetivos Específicos: |
Ao final da disciplina o aluno será capaz de:
|
PROGRAMA
Revisão de Lógica e Aritmética Booleanas
Embasamento teórico
Especificações
Implementação
Perspectivas
Projeto
Lógica Sequencial
Embasamento teórico
Especificações
Implementação
Perspectivas
Projeto
Linguagem de Máquina
Embasamento teórico
Especificações da linguagem de máquina Hack
Perspectivas
Projeto
Arquiteturas de Computadores
Embasamento teórico
Especificações da plataforma de hardware Hack
Implementação
Perspectivas
Projeto
Assembler
Embasamento teórico
Especificações de tradução de Hack Assembly para Binário
Implementação
Perspectivas
Projeto
Máquina Virtual: aritmética de pilha e controle de programa
Embasamento teórico
Especificações da máquina virtual
Implementação
Perspectivas
Projeto
Linguagem de programação de Alto-Nível
Embasamento teórico
Especificações da linguagem Jack
Escrevendo aplicações em Jack
Perspectivas
Projeto
Compilador: análise sintática e geração de códigos
Embasamento teórico
Especificações
Implementação
Perspectivas
Projeto
Sistema operacional
Embasamento teórico
Especificações do SO Jack
Implementação
Perspectivas
Projeto
METODOLOGIA
Cronograma de desenvolvimento
Aug, 1 TER Apresentação do curso, breve discussão sobre semicondutores e transistores, funções booleanas e portas lógicas
Aug, 8 TER Aritmética booleana e ULA
Aug, 15 TER Feriado
Aug, 22 TER Memória
Aug, 29 TER Linguagem de máquina
Sep, 5 TER Arquitetura de computador
Sep, 12 TER Assembler; Proposta de projeto em assembler para o computador HACK
Sep, 19 TER Máquina virtual I: aritmética de pilha, parte 1
Sep, 26 TER Máquina virtual I: aritmética de pilha, parte 2
Oct, 3 TER Máquina virtual II: controle de programa, parte 1
Oct, 17 TER Máquina virtual II: controle de programa, parte 2
Oct, 24 TER Linguagem de alto nível; Compilador I: análise sintática, parte 1
Oct, 31 TER (Não haverá aulas) TDE - Trabalho Discente Efetivo: Linguagem de alto nível; Compilador I: análise sintática, parte 2
Nov, 7 TER Compilador II: proposta de projeto em JACK para o computador HACK; geração de código, parte 1
Nov, 14 TER Compilador II: geração de código, parte 2
Nov, 21 TER Preparação do projeto pelos alunos
Nov, 28 TER Apresentação do projeto final pelos alunos
Dec, 3 a Dec, 7 SEG a QUI Recuperação: Semana de apresentação de esforço discente no semestre, com possibilidade de apresentação de projetos
A carga horária total da disciplina é de 45 horas, ou seja, 54 horas-aula. Entretanto, de acordo com o cronograma apresentado estão previstas apenas 45 horas-aula. As 9 horas-aula restantes serão realizadas por meio de atividades assíncronas com o intuito de produção do Projeto em linguagem JACK para o computador HACK.
Sobre a metodologia
Aulas expositivas dialogadas com demonstrações práticas, diagramas e codificação-exemplo, acompanhadas de indicação para materiais de apoio.
Os materiais de referência e de apoio, assim como links relevantes, avaliações e repositório de materiais complementares, serão disponibilizados com o suporte do Moodle da UFU.
AVALIAÇÃO
Entrega de pequenos projetos a cada tópico abordado (avaliação continuada) / 60% da nota final
Dois projetos maiores, um no meio e outro ao final do curso / 20% da nota final para cada projeto, totalizando 40% da nota final
ATIVIDADE DE RECUPERAÇÃO (REC): [Dec, 3 a Dec, 7] Aceite da entrega de trabalhos atrasados com 10% de desconto na nota dos trabalhos entregues até o final do semestre letivo.
BIBLIOGRAFIA
Básica
NISAN, Noam; SCHOCKEN, Shimon. The Elements of Computing Systems. MIT Press, 2005.
TOCCI, R. J.; WIDMER, N. S.; MOSS, G. L. Sistemas Digitais: Princípios e Aplicações. 11a ed. Ed. Pearson. 2011.
PATTERSON, D.A.; HENNESSY, J.L. Organização e projeto de computadores: a interface hardware/software. 4.a edição. Editora Campus, 2014.
Complementar
FLOYD, T. Sistemas Digitais: Fundamentos e Aplicações. 9a Ed. Porto Alegre: Bookman, 2007.
MOORE, Cristopher ; MERTENS, Stephan. The Nature of Computation. Oxford University Press, 2011.
STALLINGS, W. Arquitetura e organização de computadores. 8.a edição. São Paulo: Prentice Hall do Brasil, 2010.
LAING, Gordon. Digital Retro: The Evolution and Design of the Personal Computer. Sybex, 2004.
NIELSEN, Lars. Computing: A Business History. New Street Communications LLC, 2012.
APROVAÇÃO
Aprovado em reunião do Colegiado realizada em: ____/____/______
Coordenação do Curso de Graduação: _________________________
Documento assinado eletronicamente por Igor Santos Peretta, Professor(a) do Magistério Superior, em 16/08/2023, às 22:06, conforme horário oficial de Brasília, com fundamento no art. 6º, § 1º, do Decreto nº 8.539, de 8 de outubro de 2015. |
A autenticidade deste documento pode ser conferida no site https://www.sei.ufu.br/sei/controlador_externo.php?acao=documento_conferir&id_orgao_acesso_externo=0, informando o código verificador 4742317 e o código CRC EC838D86. |
Referência: Processo nº 23117.054632/2023-86 | SEI nº 4742317 |