Introdução à Ciência da Computação
1. Componente Curricular:
Introdução à Ciência da Computação
2. Carga Horária:
45 horas
3. Objetivo:
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.
4. Ementa Oficial:
Estrutura e funcionamento de um computador digital. Noções de software básico: sistema operacional, compilador, interpretador, montador. Representação interna dos dados e sistema de numeração. Resolução de problemas e desenvolvimento de algoritmos: análise de problemas, estratégias de solução e representação. Disciplina de Documentação. Estruturação e modularização. Tipos e estruturas elementares de dados. Recursão e suas aplicações.
5. Conteúdo Programático:
Histórico e Fundamentos do Computador.
Evolução dos Computadores.
Representação e Processamento dos Dados.
Sistema de Numeração.
Estrutura e Funcionamento do Computador.
Software Básico.
A Programação do Computador.
Visão Geral dos Sistemas Operacionais.
Introdução à Programação.
Resolução de Problemas e Desenvolvimento de Algoritmos.
Executando um Programa.
Estratégias de Solução e Representação de Algoritmos.
Programação Estruturada e Modular.
Estruturas de Dados.
Recursão e suas aplicações.
6. Abordagem Metodológica:
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.
7. Plano de Aprendizado:
Aula 1
Conteúdo:
Atividades:
Praticando a Evolução da Computação.
O computador como Máquina Analógica: Ábaco, Pascalina, Bombe, ...
O computador como Máquina Digital: Eniac, 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, ...
Brincando e aprendendo a programar com o Blockly Games.
Produtos:
Aula 2
Conteúdo:
Representação e Processamento dos Dados.
Atividades:
Ensinando a operação de Soma, para um computador:
Testando as Portas Lógicas básicas do Logic.ly.
Opcionalmente no TinkerCAD.
Construindo uma Tabela Verdade para Soma.
"Calculando" a expressão e o circuito lógico.
Construindo um Circuito de Soma no Logic.ly.
Produtos:
Aula 3
Conteúdo:
Atividades:
Convertendo de Decimal para Binário.
E para Hexadecimal e outras Bases?
Programando a Conversão de Decimal para Binário.
Programando a Conversão de Binário para Decimal (processo).
Somando 1 bit com Blockly, Arduino e Micro:Bit (processo).
E para Somar 4 Bits?
Produtos:
Aula 4
Conteúdo:
Estrutura e Funcionamento do Computador.
Atividades:
Entendendo a estrutura e o funcionamento do computador:
Comparando um estrutura de Alto Nível com uma de Baixo Nível.
Observando o funcionamento no Simulador K&S (Assembly K&S).
Implementando uma ULA de 4 Bits, no Logic.ly.
Construir uma ULA de 1 Bit e 4 Operações.
Integrar as 4 ULAs de 1 Bit.
Produtos:
Aula 5
Conteúdo:
Revisão de conteúdos e 1ª Avaliação.
Atividades:
Avaliando conhecimentos sobre a Representação e Processamento de Dados.
Produtos:
Relatório de Produto e/ou Prova Prática 1.
Aula 6
Conteúdo:
Atividades:
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 o código de máquina na RAM e opcionalmente clique em "Run" para executar o programa.
O Interpretador imediatamente traduz e executa a primeira instrução do seu programa, repetindo esta operação para as outras.
Com os Blocos de Código já disponibilizados, tente montar um programa semelhante ao anterior.
Clique no botão de execução e observe a quase que imediata exibição do resultado (se tudo foi montado corretamente).
Verifique nas guias de linguagens, como o aplicativo faz automaticamente a tradução.
O Compilador tem execução muito mais rápida que o interpretador.
Em ambientes de programação on-line como o JDoodle, o processo de compilação é executado automaticamente.
Ao clicar no botão "Execute" a aplicação Web envia o seu programa (código fonte) para o servidor que, automaticamente:
Executa o compilador que traduz todas as instruções de um programa.
Coloca as instruções traduzidas em um único bloco chamado código objeto. Aqui termina a compilação.
Executa o código objeto e exibe o resultado.
Criando Representação Computacional para Expressões Aritméticas e Lógicas.
Tendo como base a expressão entre parênteses mais a direita do exemplo (expressões), faça:
Abra o programa para acessar os Blocos de Código.
Identifique a sub-expressão com maior prioridade e monte o bloco de código equivalente.
Insira a expressão construída no passo anterior como um dos elementos do bloco de código para a próxima operação.
Crie o bloco de código para a expressão final usando a expressão construída no passo anterior e o dado necessário.
No bloco de exibição, adicione o bloco de expressão montado no passo anterior e execute o programa.
Como exercício faça o programa para resolver a expressão completa.
Produtos:
Aula 7
Conteúdo:
Visão Geral dos Sistemas Operacionais.
Atividades:
Incrementando de 1 no primeiro micro computador (Artigo de Lançamento).
Inicie o simulador do Altair.
Observe o código do programa.
Ligue o Altair para executar o Incremento de 1;
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 conteúdo.
Incrementando de 1 em um computador com Linux.
Inicie o simulador do Linux.
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".
Produtos:
Aula 8
Conteúdo:
Resolução de Problemas e Desenvolvimento de Algoritmos.
Atividades:
Blockly: jeito fácil de aprender ou ensinar JavaScript, Python, PHP, Lua ou Dart.
Observando os conceitos de:
Algoritmos, Tipos Primitivos de Dados, Constantes, Variáveis e Programação Sequencial.
Testando as estruturas básicas de programação e variáveis indexadas.
Produtos:
Aula 9
Conteúdo:
Executando um Programa.
Atividades:
Como executar programas no computador e o Papel (Teste de Mesa).
Programando a resolução da Equação do Segundo Grau.
Iniciando pela Equação do Primeiro Grau.
Ensinando o computador a contar.
Produtos:
Aula 10
Conteúdo:
Revisão de conteúdos e 2ª Avaliação.
Atividades:
Avaliando Conhecimentos Básicos de Programação.
Produtos:
Relatório de Produto e/ou Prova Prática 2.
Aula 11
Conteúdo:
Estratégias de Solução e Representação de Algoritmos.
Atividades:
Praticando Algoritmos: Descrição Narrativa, Fluxograma, Pseudo-código.
Desenvolvendo programas para gerenciar listas:
Somando uma lista de 50 números (digitados pelo usuário na execução do programa).
Verificando pares e múltiplos de 7 na lista de 50 números.
Verificando o maior e o menor em uma lista de 50 números.
Digitando dados na execução do programa.
Inserindo a lista em uma estrutura de dados (vetor).
Calculando a soma dos elementos de duas matrizes 3x3.
Manipulando listas de caracteres.
Invertendo a lista.
Buscando dados na lista.
Produtos:
Aula 12
Conteúdo:
Programação Estruturada e Modular.
Atividades:
Criando e diferenciando funções e procedimentos.
Resolução de Exercícios. Questões 39, 40, 44, 45, 50.
Produtos:
Aula 13
Conteúdo:
Estruturas de Dados.
Atividades:
Identificando os tipos e estruturas elementares de dados.
Resolução de Exercícios. Questões 51, 57, 58, 70, 71.
Produtos:
Aula 14
Conteúdo:
Recursão e suas aplicações.
Atividades:
Resolução de Exercícios. Questões 74, 75, 77, 78.
Produtos:
Resolução dos exercícios.
Aula 15
Conteúdo:
Revisão de conteúdos e 3ª Avaliação.
Atividades:
Praticando Programação Básica.
Produtos:
Relatório de Produto e/ou Prova Prática 3.
8. Bibliografia Básica:
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.