"Notebook" sobre Pensamento Computacional
Hi guys,
Estou compartilhando minhas anotações do
Curso Introdução à Programação e Pensamento computacional". Baseado na abordagem feita pela Mestra JULIANA MASCARENHAS
==============================================
INTRODUÇÃO:
--------------------------------------------------------------------------------
Pensamento computacional é?
Processo de pensamento envolvido na expressão de soluções em passos computacionais ou algoritmos que possa ser implementados por computador
Não é uma disciplina acadêmica, é uma habilidade generalista que utiliza a matemática, leitura, escrita com base em 4 PILARES:
Decomposição --> Dividir um problema complexo em subproblemas
Padrões, reconhecimento de --> Identificar similaridades e diferenças entre os problemas
Abstração --> Extrapolar o conceito do problema para uma forma generalista
(pegar do mundo concreto para o idealistas)
Algoritmos, design de --> Automatizar - definir passo a passo a solução do problema
As habilidades inerente ao processo são:
Raciocínio Lógico
Decomposição
Padrões
Refinamentos
Exemplos:
Na Biologia - Modelagem e mapeamento do genoma humano
Computação: Simulação de problemas de alta ordem em supercomputadores (matemática)
Competências geradas no processo:
Pensamento sistemático
colaboração dentro da equipe
criatividade e design
facilitador
------------------------------------------------------------------------------
Habilidades complementares
------------------------------------------------------------------------------
Raciocínio lógico
Pensamento estruturado, ou raciocínio, que permite encontrar a conclusão ou determinar a resolução de um problema. Você adquiri esta habilidade através do TREINAMENTO
Ele é estruturado(classificado) da seguinte forma:
INDUÇÃO - dado um fenômeno que estou observando, pego a particularidade do cenário e extrapolo para os campos das ideias e determinar Leis e teorias = ciências experimentais (tentativas e erros, observação)
DEDUÇÃO - Inversão da Indução - dada uma lei e teoria vou realizar uma dedução e realizar previsões e explicações baseadas em uma Lei.
ABDUÇÃO - utiliza a conclusão para chegar a premissa "A grama está molhada, logo choveu". (Utilizada em áreas investigativas, diagnósticos)
Para segmentar e entender a classificação do raciocínio lógico, devemos utilizar a inferência:
INFERÊNCIA:
SINTÉTICAS (Abdução, indução)
ANALÍTICA (Dedução)
Aperfeiçoamento (A partir de uma solução, determinar pontos de melhorias e refinamentos):
Melhor uso de recursos:
Encontrar solução eficiente
Otimizar processos
Melhorar códigos e algoritmos:
Simplificar linhas de códigos
Funções bem definidas
******************************************************************
Vamos agora compreender cada ETAPA de um
pensamento computacional
******************************************************************
--------------------------------------------------------------------------------
- Decomposição "By yourself"
==============================================
"Se você tem um problema que não consegue resolver, existe um problema mais fácil que você pode resolver: Encontre-o!" George Polya - Prof. Matemático
Primeiro passo da resolução de problemas dentro do conceito de pensamento computacional:
"Dado um problema complexo, devemos quebra-lo em problemas menores. Portanto, problemas mais fáceis e gerenciáveis"
Processos:
Análise - Processo de quebrar e determinar partes menores e gerenciável
Você precisa estudar e explorar o seu contexto, tentando decompor os elementos constituintes daquele seu problema de forma a realizar um exame bem detalhado do que você precisa resolver
Síntese - Combinar elementos recompondo o problema original
É um processo passo a passo, quebrar o contexto para fazer a análise e recompõem o problema original de forma que faça sentido.
Consiste em reunir elementos distintos de um único grande elemento dentro de um processo de reconstrução e daí você fundir os elementos de maneira coerente dando sentido a sua solução.
Quebrando em problemas menores
Ordem de execução de tarefas menores:
SEQUENCIAL - Existirá dependências entre as tarefas ou problemas separados que foi determinada uma ordem para serem resolvidos
PARALELO - Tarefas podem ser executadas concomitantemente de maneira que elas são isoladas independentes e depois que estas tarefas são resolvidas serão agregadas de maneira que façam sentidos para resolver o problema
Você precisa treinar maneiras distintas de decompor o mesmo problema.
Como decompor?
Entenda o problema - identifique ou colete dados
Agregue os dados - recompor com coerência
Entregue Funcionalidade - resolução do problema
--------------------------------------------------------------------------------
- Reconhecimento de Padrões:
==============================================
Modelo de referencia que determina uma estrutura invariante e que pode gerar repetição
Modelo base
Estrutura invariante
Repetição
É através da detecção de similaridades e diferenças entre os contextos e objetos que reconhecemos um padrão.
A detecção de padrão ela aborda a ideia de você extrair características a fim de classificar seus dados utilizando-se de diferentes métodos e aplicá-los em diferentes contextos.
Ex.:
No modelo de armazenamento de uma rede social, as fotos estão associadas por METADATA e utiliza-se uma técnica de "COMPRESSÃO(padrão)" para salvamento no servidor de dados.
Os seres vivos utilizam o padrão de Similaridade para identificar seus alimentos
Por que determinar padrões?
Para poder Generalizar. Com objetivo de obter resolução para problemas diferentes
Como fazer um padrão?
Através de Classes e categorias:
Ex.:
Grau de similaridade,
Grupos conhecidos x objeto desconhecido
Como o computador reconhece padrões?
No computador precisamos
Fornecer atributos
Aprender por associação
Armazenar estes dados
e por fim Regras de decisão.
Onde utilizamos esses padrões?
Classificação de dados
Reconhecimento de imagem
Reconhecimento de fala
Análise de cenas
Classificação de documentos
Algumas áreas do reconhecimento que utilizam o reconhecimento de padrões:
Machine Learning
Redes Neurais
Inteligência Artificial
Ciência de dados
--------------------------------------------------------------------------------
* Abstração: Generalização / Abstração
==============================================
Abstrair é observar um ou mais elementos, avaliando características e propriedades em separado
Abstração é um Processo intelectual de isolamento de um objeto da realidade
Abstrair X Abstração:
Detectar característica X Extrapolar o objeto do mundo concreto para o mundo das ideias
Generalização - Tornar-se geral, mais amplo, extenso.
Nesse processo precisamos pegar os elementos principais de um determinado objeto extrapolá-lo para um mundo abstrato de maneira que você o torne geral
Abstrair é generalizar!
Na lógica a generalização é a operação intelectual que consiste em reunir numa classe geral, um conjunto de seres ou fenômenos similares.
Como classificar esses dados?
Avaliando suas características e separá-los por suas propriedades
Identificar os pontos essenciais(peculiaridades. ex. Nome completo, matrícula, endereço)
Generalizar em detrimento dos detalhes
Exemplo:
Limpar o terreno:
1 - Preciso classificar? Não
2 - Preciso verificar a distância? sim
3 - Preciso identificar áreas preservadas? sim
--------------------------------------------------------------------------------
* Algoritmo "step by step"
==============================================
Principal pilar para o pensamento computacional:
Uma sequência de passos com objetivo definido para
Execução de tarefas específicas através de um
Conjunto de operações que resultam em uma sucessão finita de ações
Algoritmo é o processo de resolução de problemas "step by step" utilizando instruções. Que precisa ser entendido pela máquina e pelo humano.
Onde se aplica um algoritmo:
Ao preparar um sanduiche, trocar uma lâmpada, traçar o trajeto ao trabalho, desenvolver um sistema, entre outros.
Todas essas tarefas envolvem instruções executadas passo a passo para concluir uma tarefa.
O Algoritmo descreve o problema por meio de ferramentas narrativas, fluxograma, ou pseudocódigo
Como construir?
Compreender o problema
Definir dados de entrada
Definir processamento
Definir dados de saída
Utilizar um método de construção(refinamento),
Realizar teste e diagnóstico
Os métodos de algoritmos:
Narrativa(Linguagem natural) - Pode ser ambígua e fornecer diversas interpretações
Fluxograma(símbolos pré-definidos) - conhecimento prévio da estrutura e símbolos
Pseudocódigo(Portugol) - Passos a serem seguidos, próximo a uma linguagem de programação
Codificação:
O algoritmo é codificado de acordo com a linguagem de programação escolhida
--------------------------------------------------------------------------------
Estudo de caso conceitual: perdido
==============================================
Como maximizar as chances de sobrevivência para uma pessoa que está perdida na floresta!
Como resolver um problema utilizando o pensamento computacional?
Identificar mecanismos, os recursos comuns e detalhes mais importantes.
RESOLVENDO:
Decomposição do problema original
Reconhecimento de padrões (Verificar REPETIÇÃO)
Abstração (observando os detalhes cruciais a situação, sem detalhamento)
Determinar instruções passo a passo
--------------------------------------------------------------------------------
Estudo de caso conceitual: soma de intervalo
==============================================
Decomposição do problema original
Reconhecimento de padrões (Verificar REPETIÇÃO)
Abstração (estrutura de repetição, variáveis)
Estruturar em algoritmo.
=============================================
A parte de Lógica, algoritmo e programação ficarão para outros artigos.
Espero que ajude nos estudos!