UNIVERSIDADE FEDERAL DE UBERLÂNDIA
Coordenação do Curso de Graduação em Engenharia de Computação

Av. João Naves de Ávila, 2121 - Bairro Santa Mônica, Uberlândia-MG, CEP 38400-902
Telefone: -
  

Timbre

Plano de Ensino

IDENTIFICAÇÃO

Componente Curricular:

Elementos de Sistemas Computacionais

Unidade Ofertante:

Faculdade de Engenharia Elétrica (FEELT)

Código:

FEELT31524

Período/Série:

Turma:

C

Carga Horária:

Natureza:

Teórica:

30

Prática:

15

Total:

45

Obrigatória:

( X )

Optativa:

( )

Professor(A):

IGOR SANTOS PERETTA

Ano/Semestre:

2023-1

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:

  • Desmembrar os diversos subsistemas de um computador e desenvolver versões dos mesmos

  • Integrar noções de algoritmos, hardware, arquitetura de computadores, código de máquina, compiladores, sistemas operacionais, aplicações e softwares em geral

  • Atuar diretamente em código de máquina caso necessário

  • Criar seu próprio sistema computacional

  • Construir um compilador e um sistema operacional simples

  • Identificar melhores pontos para desenvolvimento entre hardware ou software

  • Detectar pontos críticos e otimizar entre os diversos níveis de hardware e software

  • Discutir os maiores trade-offs do design da computação moderna

PROGRAMA

Revisão de Lógica e Aritmética Booleanas

Lógica Sequencial

Linguagem de Máquina

Arquiteturas de Computadores

Assembler

Máquina Virtual: aritmética de pilha e controle de programa

Linguagem de programação de Alto-Nível

Compilador: análise sintática e geração de códigos

Sistema operacional

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

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

  1. NISAN, Noam; SCHOCKEN, Shimon. The Elements of Computing Systems. MIT Press, 2005.

  2. TOCCI, R. J.; WIDMER, N. S.; MOSS, G. L. Sistemas Digitais: Princípios e Aplicações. 11a ed. Ed. Pearson. 2011.

  3. PATTERSON, D.A.; HENNESSY, J.L. Organização e projeto de computadores: a interface hardware/software. 4.a edição. Editora Campus, 2014.

Complementar

  1. FLOYD, T. Sistemas Digitais: Fundamentos e Aplicações. 9a Ed. Porto Alegre: Bookman, 2007.

  2. MOORE, Cristopher ; MERTENS, Stephan. The Nature of Computation. Oxford University Press, 2011.

  3. STALLINGS, W. Arquitetura e organização de computadores. 8.a edição. São Paulo: Prentice Hall do Brasil, 2010.

  4. LAING, Gordon. Digital Retro: The Evolution and Design of the Personal Computer. Sybex, 2004.

  5. 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: _________________________

 


logotipo

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.


QRCode Assinatura

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