Introdução à Ciência da Computação
60 horas
Capacitar o aluno a conhecer os princípios fundamentais do funcionamento e da programação dos computadores (hardware e software), entendendo os usos e as terminologias básicas do computador.
Computadores e Programas. História da Computação. Sistemas de Numeração. Representação de dados: Bits e Bytes. Conceitos de Arquitetura e Sistemas Operacionais. Princípios de Redes de Computadores e Aplicações. Tendências na computação.
Histórico e Fundamentos do Computador.
Evolução Histórica dos Computadores.
Representação e Processamento dos Dados.
Introdução aos Sistemas de Numeração.
Estrutura e Funcionamento do Computador.
Importância e Classificação dos Dispositivos Periféricos.
Software Básico.
Diversidade e Paradigmas das Linguagens de Programação.
Algoritmos e Programação.
Introdução aos Sistemas Operacionais.
Características dos Principais Sistemas Operacionais.
Diversidade das Aplicações Computacionais.
Redes e Internet.
Redes de Comunicação de Dados.
Sistemas Distribuídos e Internet.
Aprender fazendo e fazer aprendendo. As ações implementadas têm como foco o aprendizado dos fundamentos da computação pelo uso de recursos computacionais - privilegiando o projeto por simuladores e o desenvolvimento prático; seguido de exposições teóricas, apoiadas por: simulações, slides e vídeos. Em resumo, a metodologia tem como base a tríade Conteúdo, Atividade e Produto.
A nota final será dada pelas avaliações dos artefatos (relatório, lista de exercício - manuscritas, apresentação oral, pôster, postagem, vídeo, ...) produzidos durante as aulas e entregues em cada uma das datas especificadas. O aluno também será avaliado através de outros recursos, como p.ex. a frequência e a apresentação de artefatos não obrigatórios - os quais poderão até ter pontuação extra.
Conteúdo:
Atividades:
Apresentando as Gerações dos Computadores.
A Visão Geral das Gerações e a Evolução e Miniaturização dos Computadores.
Computadores têm como base os Circuitos Integrados, compostos por Portas Lógicas e estas por Transístores.
Implementação de Portas Lógicas com Transistores.
Praticando a Evolução dos Computadores.
O computador como Máquina Analógica: Ábaco, Pascalina, Bombe, ...
O computador como Máquina Digital: IAS (Manual), Altair, ULA de 1 Bit (protótipo), UCP de 2 Bits, ...
Evolução na Programação: Ada, Fortran, Fluxograma, Diagrama de Chapin, Blockly Demos, Scratch, AppInventor, ...
Discutindo sobre Classificação e Tipologia.
Sistemas Embarcados e Industriais.
Iniciando o aprendizado de programação com o Blockly Games.
Avaliativa: Em equipes de 3 a 5 alunos, desenvolver uma simples animação (ou jogo) com o tema "Evolução Histórica dos Computadores". Use como ferramenta de desenvolvimento o Scratch, ou similar. Lembrem-se que o Relatório (Roteiro) desta atividade fará parte do trabalho prático da primeira avaliação.
Produtos:
Conteúdo:
Representação e Processamento dos Dados.
Atividades:
Apresentando o Computador Digital e sua Organização.
O computador pode Manipular/Processar dados reais "materializados" em Bits e Seus Derivados.
A Realidade pode ser "Manipulada", mas antes deve ser Representada por Bits.
Podem existir Diversas Representações para um Número Binário.
O processamento é efetivado por Portas Lógicas, ou pela Combinação de Portas e/ou Componentes. P.ex. Semáforo Digital.
Demonstrando o Processamento Binário com a operação de Soma, ou Subtração.
Iniciar testando as Operações Lógicas Fundamentais no Logic.ly.
Construir uma Tabela Verdade para Soma Binária. Podemos até "Calcular" a expressão e o circuito lógico.
Construir um Circuito de Soma no Logic.ly, usando as Portas Lógicas Básicas.
Demonstrando o processamento de Dados Binários usando Hardware e Software.
Exibir um Caractere (Tabela ASCII) usando o Simple 8-Bit Assembler.
Avaliativa: Em equipes de 3 a 5 alunos, no Logic.ly, construir um módulo (circuito integrado) de Soma Completa e usar quatro deles, para montar um Somador de 4 Bits. Novamente lembro que o relatório (roteiro) desta atividade fará parte do trabalho prático da primeira avaliação.
Produtos:
Eletrônica Digital em 2 Produtos.
Why Do Computers Use 1s and 0s? Binary and Transistors Explained.
Processamento de dados: o que é, tipos e como se tornar um especialista.
Conteúdo:
Atividades:
Convertendo de Decimal para Binário.
Iniciar com a Decomposição Decimal com o método das Múltiplas Divisões por 10.
Exemplos de programas para conversão: Decimal para Binário e Binário para Decimal (processo).
Qual o processo de conversão para Hexadecimal e outras Bases?
Representando Números Binários Negativos.
As representações em Complemento de 1 (pouco usada) e com Complemento de 2.
Detalhamento do processo de Cálculo do Complemento de 2 e de Conversão de um Binário Negativo para Decimal.
Exemplo de Representação dos Números Inteiros em Binário (4 Bits).
Avaliativa: Em equipes de 3 a 5 alunos, no Logic.ly, construa um módulo de Subtração de 4 Bits, usando como base o módulo Somador de 4 Bits desenvolvido na atividade da Aula 2 e os fundamentos do Complemento de 2. Opcionalmente pode ser desenvolvido um Somador/Subtrator no TinkerCAD, usando como base o CI 74283. Após isso, desenvolva o relatório da atividade.
Produtos:
Programa para conversão de Decimal para Binário.
Comparadores: (=,>,<) em 1 Bit, de Igualdade em 4 bits e de (=,>,<) em 4 Bits.
Conteúdo:
Estrutura e Funcionamento do Computador.
Atividades:
Exemplificando a Operação Básica em um Computador.
O Fluxo de Operações em um Computador e similaridade com o Funcionamento da UCP. i) insira valores inteiros nos registradores R2 e R3; ii) no Banco de Registradores, selecione R2 e R3 como elementos de entrada para a ULA; iii) na ULA selecione a operação desejada, p.ex. subtração e; iv) execute a simulação.
Comparando uma representação estrutural de Alto Nível, com uma de Baixo Nível.
Programando o funcionamento (p.ex. subtração) no Simulador K&S (Assembly K&S). Basta executar a simulação com os dados em, p.ex. R2 e R3; e que, a partir do endereço zero da memória, seja inseridas as instruções SUB R0 R2 R3 e HALT. Complementar o programa, de modo que os dados estejam em algum lugar da memória, p.ex. a partir do endereço 10.
Implementando uma ULA de 4 Bits, no Logic.ly.
Construir uma ULA de 1 Bit e 4 Operações: i) construir o CI Somador e o CI Multiplexador; ii) conectar as entradas aos circuitos AND, OR, NOT e de Soma, e integrar com o Multiplexador - Download Somador e Mux 4x1.
Integrar 4 ULAs de 1 Bit: i) dispor as 4 ULAs, lado a lado; ii) inserir as chaves de entrada (4 bits A e B) e conectá-las as entradas das ULAs; iii) "zerar" o CIN mais a direita e conectar os COUTs aos CINs, da direita para esquerda; iii) conectar mostradores as saídas e ao COUT mais a esquerda.
Avaliativa: Em equipes de 3 a 5 alunos, no Logic.ly, reiniciar o processo de implementação da ULA de 4 Bits, adicionando as operações NAND, NOR, XOR e XNOR. Após isso, desenvolva o relatório da atividade e o Relatório da Primeira Avaliação.
Produtos:
Conteúdo: Revisão de conteúdos e 1ª Avaliação.
Atividades: Apresentação e Avaliação de trabalhos.
Produtos: Relatório de Produto 1 e/ou Prova Prática 1.
Conteúdo:
Importância e Classificação dos Dispositivos Periféricos.
Atividades:
Explicando e aplicando o Conceito de Periféricos.
Os periféricos para realidade virtual (CAVE) e outros tipos de interfaces humano computador.
Entendendo como os periféricos se comunicam.
A comunicação via Barramento: visão geral do conceito, alguns tipos, organização e exemplos.
A comunicação do Humano Analógico (Tipo do Sinal) e a do Computador Digital.
Inserindo um sinal digital em um analógico - Modulação.
Circuito simplificado para Teclado Hexadecimal (Exemplo de Aplicação).
Exercício: Na lista de dispositivos encontrada no texto "Periféricos (e sua função)", escolha aleatoriamente 2 dispositivos e desenvolva um infográfico sobre eles. Pode usar como exemplo os seguintes: Exemplo 1, Exemplo 2 e Exemplo 3. Gere um PDF do material desenvolvido e aguarde as instruções para entrega da atividade.
Produtos:
Conteúdo:
Diversidade e Paradigmas das Linguagens de Programação.
Atividades:
Observando a Evolução e Organização das Linguagens de Programação.
Modos de Programação: tradicional, visual, orientada a eventos, orientada a objetos, ...
Diferença entre tradutor, compilador (fonte e objeto) e interpretador.
Entendendo os Paradigmas de Programação.
Avaliativa: Em grupos de 3 a 5 alunos, desenvolver um relatório técnico que identifique e caracterize, no contexto dos paradigmas de programação, as linguagens C, C++, Python e Rust e Closure. Após isso, desenvolva o relatório da atividade. Use como base os materiais do "Conteúdo" e os textos a seguir:
Produtos:
Conteúdo:
Algoritmos e Programação.
Atividades:
Exemplos: i) Algoritmo em Linguagem Natural e; ii) Representação Gráfica de um Algoritmo.
Outros Conceitos para Algoritmo. Existe alguma falha nessas Assertivas para Algoritmo?
Visões para Fluxogramas: Simplificada, Informal e Estruturada.
Diferenciando Tradutores:
O Montador traduz da linguagem Assembly, para a linguagem da máquina.
Abra o 8-Bit Assembler e apague o programa na área de código. Digite na área de código as instruções mov a,10, add a,5 e hlt. Uma instrução em cada linha.
Observe a RAM "zerada" e clique no botão "Assemble", abaixo da área de código. Observe também a tradução para o código de máquina na RAM.
O Interpretador traduz e executa a primeira instrução do programa, repetindo a operação para as instruções seguintes.
Com os Blocos de Código já disponibilizados, tente montar um programa semelhante ao anterior.
O Compilador gera um código executável traduzindo completamente um código fonte.
Etapas do Processo de Compilação e Exemplo do Processo em C.
O Processo de Compilação pode ser Executado Manualmente, em Ambientes Gráficos Desenvolvimentos, ou em ambientes de programação on-line como o JDoodle.
Criando representações computacionais para expressões aritméticas e lógicas.
Tendo como base a primeira expressão dos Exemplos, faça um programa no 8-Bit Assembler para implementá-la; lembrando que em Assembly, cada instrução executa apenas uma operação. Deste modo, o programador deve identificar as precedências.
Avaliativa: Em grupos de 3 a 5 alunos, desenvolver os programas para resolver as outras expressões dos Exemplos. Após isso, desenvolvam o relatório da atividade.
Produtos:
Conteúdo:
Visão Geral dos Sistemas Operacionais.
Atividades:
Comentando sobre o conceito, as funções e o componentes de um SO.
Visão geral e taxonomia dos SOs.
Incrementando de 1 no primeiro micro computador (Artigo de Lançamento).
Inicie o simulador do Altair e observe o código do programa a ser executado (Incremento de 1).
Ligue o Altair e selecione o endereço 0, ou seja: A7-A0 com 00000000 clicando em EXAMINE.
No endereço selecionado, insira o primeiro byte, ou seja: D7-D0 com 00111100 e DEPOSIT.
Nos endereços de 1 a 4, insira os outros bytes. Ou na guia Debug, entre com "3c 32 10 00 76".
Execute clicando em RESET e depois RUN. Selecione o endereço 00010000 e verifique o resultado.
Incrementando de 1 em um computador com Linux.
Inicie o simulador do Linux e entre com o comando "expr 0 + 1".
Incrementando de 1 em seu computador ou celular.
Abra a sua calculadora preferida e execute a operação "0 + 1".
Avaliativa: Em grupos de 3 a 5 alunos, alterar o programa do exemplo inicial, inserindo no início do mesmo uma instrução LDA (para copiar no registrador A), um valor manualmente inserido no endereço 128. Para referência, acesse o Conjunto de Instruções do 8080. Após após a alteração e os devidos testes, desenvolvam o relatório da atividade.
Produtos:
Conteúdo: Revisão de conteúdos e 2ª Avaliação.
Atividades: Apresentação e Avaliação de trabalhos.
Produtos: Relatório de Produto 2 e/ou Prova Prática 2.
Conteúdo:
Características dos Principais Sistemas Operacionais.
Atividades:
Comentando a Visão Geral dos SOs.
Um pouco da Evolução Histórica.
A Organização Geral dos SOs.
Detalhes da interação com o Hardware e com as Aplicações.
Comentando sobre os SOs mais comuns.
A diversidade do Linux.
A Evolução das IUs: do NeXTSTEP às facilidades dos dispositivos móveis.
Avaliativa: Em grupos de 5 a 8 alunos, desenvolver uma apresentação interativa ou infográfico interativo de 5 a 10 minutos sobre o tema "Características dos Principais Sistemas Operacionais". Use como base os materiais do "Conteúdo" da Aula 11 e o texto O que é Sistema Operacional? O guia completo!
Produtos:
Conteúdo:
Diversidade das Aplicações Computacionais.
Atividades:
Iniciando pelos Tipos de Computadores.
Apresentando a Classificação Geral dos Softwares e seus sub-tipos:
Sistemas Operacionais, de Programação e de Aplicação.
Um pouco sobre Arquitetura de Software.
Observando alguns tipos de Licenças de Software.
As licenças Creative Commons e suas aplicações.
Como distribuir software livre.
Avaliativa Em grupos de 3 a 5 alunos, desenvolver um pequeno artigo (de 2 a 4 páginas) sobre o tema: "Diversidade das Aplicações Computacionais". Os materiais do "Conteúdo" e o texto Computador: conceitos e aplicações, devem ser usados como base para gestão do conhecimento da atividade.
Produtos:
Conteúdo:
Atividades:
Conversando sobre os conceitos básicos.
Conceituando Redes de Computadores e Protocolos.
O Histórico da Internet e de seus Principais Protocolos.
Os Tipos e os Formatos de Conexão.
Criando redes em simuladores.
Produtos:
Conteúdo:
Sistemas Distribuídos e Internet.
Atividades:
Apresentando a Internet.
O Avanço da Web, dos seus recursos, do modo como os usuários interagem com ela, e do seu principal protocolo.
Entendendo a definição e as características de um sistema distribuído (SD).
As arquiteturas, os componentes físicos e os tipos de SDs.
Componentes: Sistemas Operacionais, Banco de Dados, Sistemas e Aplicações.
Produtos:
Conteúdo: Revisão de conteúdos e 3ª Avaliação.
Atividades: Apresentação e Avaliação de trabalhos.
Produtos: Relatório de Produto 3 e/ou Prova 3.
BROOKSHEAR, J. G., 2013: Ciência da Computação uma Visão Abrangente. - 11. ed., Bookman, 561p.
GUIMARÃES, A. M., 1984: Introdução à Ciência da Computação. - LTC, 165p.
TERADA, R., SETZER, V., 1991: Introdução à Computação e à Construção de Algoritmos. - McGraw-Hill, 135p.