O Ensino de Ciência da Computação Práticas de ensino de algoritmos (Hazzan, Cap. 3 / EAD Cap. 2) Péricles Miranda
O Que é Ciência da Computação? Analise os argumentos abaixo: 1. Ciência é a observação, descrição, investigação experimental e explicação teórica de fenômenos naturais, de forma sistemática 2. Ciência da computação é o estudo de computadores e fenômenos relacionados 3. Computadores não são fenômenos naturais 4. Então, ciência da computação não é uma ciência. Você concorda ou não? Por que?
Computação: Ciência ou Engenharia?
O Que é Ciência? Tudo que é: verdadeiro? Provável? Justificado? Objetivo? Correto? Filosofia da Ciência: Interessada em perguntas do tipo Propósito da ciência: Descrever o mundo? Explicar o mundo? Melhorar o mundo? Teorias científicas são Instrumentais (i.e., calculáveis )? Realistas? O método científico é Experimental & cumulativo? Dirigido por paradigmas & revoluções? Matemática é uma ciência? Leituras: Papineau, Philosophy of Science (1996) Kemeny, A Philosopher Looks at Science (1959)
O Que é Engenharia? Aplicação da ciência à tecnologia? Invenção de dispositivos vs. descoberta de novos conhecimentos? Uma forma de resolver problemas? Davis, Thinking Like an Engineer (1998) CS é um novo tipo de engenharia? Estuda teoria, projeto, análise e implementação de algoritmos de processamento de informações Loui, CS Is an Engineering Discipline (1987)
Ciência da computação 20 anos para se firmar como disciplina separada de engenharia elétrica, matemática e lógica Natureza interdisciplinar Muitas definições!! Veremos algumas...
Ciência da Computação Ciência da computação é o estudo de computadores e fenômenos relacionados (Newell, 1967) Computadores não são um resultado da ciência da computação? As coisas estudadas por químicos e físicos, em sua maioria, acontecem mesmo sem eles Isso acontece com a ciência da computação?
Ciência da computação Definição baseada na noção de algoritmo: Our (first order) definition is that computer science is the study of the theory and practice of programming computers. This differs from the most widely used definition by emphasizing programming as the central notion and algorithms as a main theoretical notion supporting programming. (Khalil & Levi, 1978
Ciência da computação Foco em informação: Ciência da Computação é a disciplina que lida com a representação, implementação, manipulação e comunicação de informação algoritmicamente (Bajcsy et al., 1992,)
Ciência da computação Ou será outra coisa (?): Like electricity, these phenomena [surrounding computers] belong both to engineering and to science. (Knuth, 1974)
O Ensino de computação e o perfil do profissional Diversos cursos ensinam computação Computação como atividade fim Computação como atividade meio Licenciatura em Computação Tecnologia e Sequenciais
O Profissional de computação Muitas demandas específicas! Arquiteto de Software, Engenheiro de Software, Analista de Sistemas, Programador, Analista de Suporte, DBA, Engenheiro de Testes, Gerente de Rede, Gerente de Sistemas,...
Perfis dos cursos de computação Fonte: http://www.acm.org/education/education/curric_vols/cc2005-march06final.pdf
Grade curricular (ideal) Engenharia da computação
Grade curricular (ideal) Ciência da computação
Grade curricular (ideal) Sistemas de informação
Grade curricular (ideal) Tecnologia da Informação
Grade curricular (ideal) Engenharia de Software
E o Brasil nisso tudo? Ainda em processo de separação dos cursos Ciência da computação é geralmente um guarda-chuva
O Ensino de Algoritmos A disciplina pode ter outros nomes Tem por objetivo ordenar o pensamento do aluno, fazendo com que o mesmo aprenda a resolver problemas usando a mesma sequência lógica utilizada pelo computador Ensina o aluno a compreender um problema, definir sua resolução e aplicar esta resolução no formato da pseudo-linguagem, que posteriormente, poderá ser convertida para uma linguagem de programação real
Habilidades a serem desenvolvidas... Raciocínio lógico-matemático Assimilar novas tecnologias Capacidade analítica Formalizar problemas computacionalmente E resolver os problemas! Normalmente são adquiridas nas disciplinas relacionadas à algoritmos.
Dificuldades A resolução de problemas computacionais envolve várias capacidades e habilidades: abstração modelagem criatividade organização sequenciamento de ideias capacidade de descrever sem ambiguidades como realizar alguma ação Desenvolver essas habilidades é equivalente ao processo de alfabetização!
Dificuldades Alunos Abstração é um conceito incomum Pouco embasamento lógico-matemático Especialmente no Brasil Turmas heterogêneas Não estudam da forma adequada Falta de conhecimento sobre o curso/área Professores Exige uma forte demanda de interação a fim de: Atender Acompanhar Mediar Avaliar os alunos Turmas grandes Depois que desenvolve o raciocício lógico, não consegue pensar de outra forma
Outros problemas Falta de infra-estrutura (laboratórios, etc) Falta de motivação dos alunos Raciocínios diferenciados Muitas soluções possíveis Não existe um gabarito Elaboração de provas Questões simples podem levar muito tempo para serem resolvidas Interpretação dos problemas e enunciados Como começar a solução do problema? Fama da disciplina!
E mais... Falta de exercícios Decorar respostas Dificuldade de abstração e generalização Problemas pessoais, etc...
Leitura Complementar Cap. 2, Livro EAD Cap. 3, Hazzan
Atividade 1 Fazer uma análise critica dos artigos: Experiências Positivas para o Ensino de Algoritmos Aprendizagem De Algoritmos: Dificuldades Na Resolução de Problemas Entregar apresentação com 3 slides (para cada artigo), pontuando: Objetivo do artigo Ideia central Problemas a serem resolvidos Propostas para minimização do problema Relato da experiência Conclusão Entrega da apresentação até antes do horário da aula (em pdf) para o email: periclesmiranda@gmail.com Data de entrega/apresentação: 25/09/2014