PROJETO PEDAGÓGICO DE ENSINO DE ALGORITMOS

 

Professores:                   Breno Miranda               -       miranda_breno@yahoo.com.br

                           Natália Flora                 -       natalia_flora@yahoo.com.br

 

 

 

Resumo:

      Têm o objetivo de realizar em conjunto com os alunos do Curso de Licenciatura em Computação a produção de um plano pedagógico, confeccionado com a intenção de auxiliar na aprendizagem da disciplina de algoritmos.  Tendo sido observada a dificuldade dos alunos em entender e conseqüentemente aprender esta disciplina. Para tanto, foram consultados  textos e ferramentas relacionados ao tema.

 

  1. Introdução:

 

Este plano pedagógico foi formulado a partir de pequenas experiências em comunhão com as dificuldades enfrentadas pelos alunos na disciplina de Ensino de Algoritmos. Visando uma melhoria na mesma serão aplicadas novas técnicas e ferramentas de apoio que facilitarão o ensino e conseqüentemente a aprendizagem. Promovendo, assim, um a relação construtiva entre alunos e professores.

 

  1. Trabalhos Relacionados:

 

·         “Ferramentas para auxílio ao ensino de lógica de programação e algoritmos”    Universidade do Vale do Itajaí – UNIVALE - Brasil.

·         “How to organize your thesis”  -  Universiade de Ottawa – Canadá

·         “Teaching Algorithms in Secondary Education”  -  Universidade de Patras – Grecia

·         “Experiências Positivas para o Ensino de Algoritmos” -  Universidade Tiradentes – UNIT – Brasil

·         “A mesma velha questão: como ensinar programação”  -  Universidade Nova de Lisboa – Portugal.

 

 

  1. Projeto Pedagógico:

 

 

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

Departamento de Matemática e Física

Ensino de Algoritmos

 

 

Disciplina: Prática e Ensino de Algoritmos

Carga-horária: 60 h/a     Formação: Superior

Pré-Requisitos: Matemática Discreta

Período Letivo: 2004/2               Turma: LC1

Professores: Breno Miranda       -                miranda_breno@yahoo.com.br

Natália flora          -                   natalia_flora@yahoo.com.br

 

 

 

 

Plano de Ensino:

O Curso de Licenciatura em Computação tem como meta formar profissionais aptos a ensinar  e desenvolver softwares educacionais, habilitando-os a utilizar ferramentas de apoio ao ensino, além de prepará-lo para lidar com problemas do dia-a-dia que serão, posteriormente, vividos em sala de aula.

 

Objetivos:

Desenvolver a capacidade de resolver problemas a partir de análises empíricas; procurar formular novas soluções para problemas já conhecidos. Tendo em vista a utilização de uma linguagem, algorítmica apropriada. Além de conhecer a lógica computacional e a programação estruturada.

 

Ementa:

"Análise” e não conceituação de algoritmo. Expressão de soluções em termos de algoritmos estruturados. Discussão e aplicação das principais estruturas para controle de fluxo de algoritmos; bem como de estruturas básicas para estruturação da informação. Fornecer aos alunos a possibilidade de aliar o estudo teórico à resolução de problemas práticos através da interdisciplinaridade.

 

Conteúdo Programático:

  1. Apresentação, discussão da matéria – Prática e Ensino de Algoritmos e apresentação de um problema que será a base para a próxima aula.

1.1.   Busca da solução do problema visto na última aula.

1.2.      Apresentação de algoritmos.

1.3.      Como estruturar os algoritmos

1.4.      Utilização de algoritmos seqüenciais.

1.5.      Operações de entrada e saída.

1.6.      Operações de entrada e saída.

 

 

2.          Avaliação de Variáveis e Constantes

2.1.      Comandos de atribuição

2.2.      Operações aritméticas inseridas no contexto do problema em questão.

2.3.      Exercícios - utilizar todas as funções vistas em aulas passadas.

 

3.          Estruturas para controle de fluxo do algoritmo.

3.1.      Estrutura condicional

3.2.      Estruturas de repetição

3.3.      Exercícios - utilizar todas as funções vistas em aulas passadas.

 

4.          Estruturas básicas para organização da informação.

4.1.      Vetores, Matrizes - utilidade e seu comportamento.

4.2.      Operações sobre matrizes: compactação, união, classificação e somatório.

4.3.      Exercícios - utilizar todas as funções vistas em aulas passadas.

 

5.          Algoritmos de ordenação.

5.1.      Ordenação por troca – bubble sort, quick sort.

5.2.      Ordenação por inserção – heap sort.

5.3.      Ordenação intercalação – merge sort.

5.4.      Ordenação por contagem – counting sort.

5.5.      Exercícios - utilizar todas as funções vistas em aulas passadas.

 

 

6.          Modularização de Algoritmos.

6.1.      Refinamentos sucessivos.

6.2.      Decomposição funcional.

6.3.      Sub-rotinas e funções.

6.4.      Recursividade.

6.5.      Exercícios - utilizar todas as funções vistas em aulas passadas.

 

 

 

Metodologia:

 

As aulas desenvolver-se-ão voltadas para a análise e resolução de problemas.  Expressão das soluções em uma linguagem algorítmica especificada para cada fim. Exposições/discussões teóricas serão realizadas em função das atividades relacionadas aos problemas propostos. As atividades, conforme sua natureza, serão desenvolvidas em salas de aula convencionais e/ou salas de aula com computadores. Será utilizada a ferramenta ATMUF (Ambiente para Teste de Mesa Utilizando Fluxograma) para auxiliar os alunos, principalmente os do 1º período, a desenvolverem a lógica de programação.

A disciplina dispõe de uma home-page com a função de organizar o trabalho a ser desenvolvido. Nela estão disponibilizados recursos para aprendizagem dos tópicos da disciplina, bem como recursos de comunicação com professores e alunos, para tratar de temas e problemas de interesse comum. Além de uma ”caixa de sugestões”, onde os alunos poderão disponibilizar exercícios resolvidos, desafios, jogos e outros recursos que venham a auxiliar o ensino e a interação entre os alunos. Ao final de cada bloco de aulas (1,2,3,...) os alunos terão de propor e resolver um problema em grupo; para aumentar a interação, dos mesmos, dentro e fora da sala de aula.

 

Avaliação:

 

O sistema de avaliação compreende verificações parciais, realizados ao final de cada bloco de aulas, sobre o conteúdo programático, das quais é obtida a média de aproveitamento do aluno quanto aos objetivos. Os resultados das avaliações serão retornados aos alunos, cuja correção ou avaliação deverão servir como instrumento do processo de ensino e aprendizagem. O aluno que obtiver média igual ou superior a 7 (sete), e freqüência superior a 70%, é considerado aprovado. Se o aluno não alcançar esta média, ele deverá realizar uma avaliação no fim do semestre, avaliação esta que abrangerá todo o conteúdo da disciplina. Será considerado aprovado o aluno que obtiver conceito igual ou superior a cinco nesta avaliação.

A nota final do aluno será computada através da média aritmética entre as duas maiores notas obtidas durante o semestre.

 

Cronograma:

 

Data

Conteúdo

28/10/04

Apresentação da disciplina. Introdução aos algoritmos. Lançamento de um problema, que servirá de base para a próxima aula.

02/11/04

Introdução a algoritmos. Algoritmos naturais. Jogos (Desafios).

04/11/04

Forma geral de um algoritmo, variáveis, operador de atribuição, comentários.

09/11/04

Linearização de expressões, operadores aritméticos, operadores relacionais, operadores lógicos.

11/11/04

Estrutura condicional

16/11/04

Comandos de entrada e saída.

18/11/04

Estruturas de repetição.

23/11/04

Avaliação

25/11/04

Discussão da avaliação

30/11/04

Bubble sort

02/12/04

Quick sort

07/12/04

Heap sort

09/12/04

Merge sort

14/12/04

Exercícios

16/12/04

Vetores

21/12/04

Matrizes

23/12/05

Sub-Rotinas

28/12/04

Recursividade

30/12/04

Recesso

06/01/05

Decomposição funcional

11/01/05

Refinamentos sucessivos

13/01/05

Exercícios

18/01/05

Avaliação Parcial

20/01/05

Revisão de Conteúdos – Entrega de Notas

25/01/05

 

Revisão de conteúdos

 

27/01/05

Avaliação Final

 

 

 

  1. Considerações:

 

Este projeto pedagógico tem como meta principal melhorar o ensino de algoritmos, utilizando para tal, ferramentas que auxiliem na relação ensino-aprendizagem, melhorando o rendimento, motivação, freqüência e participação dos alunos.

Outro fator a ser considerado é a utilização de atividades recreativas como jogos, para estimular os estudos e a busca por novas soluções, pontuação extra para os alunos que apresentarem algoritmos refinados ou inéditos.

 

    

  1. Bibliografia Básica:

·         MANZANO, José A. N. G., OLIVEIRA, Jayr F. Algoritmos - Lógica para Desenvolvimento de Programação de Computadores. Tatuapé:Érica, 2001.

·         FORBELLONE, André L. V. Forbellone Lógica de Programação: a construção de algoritmos e estruturas de dados.  São Paulo:Makron Books, 2000.

·         SALVETTI, Dirceu D.; BARBOSA, Lisbete M. Algoritmos. São Paulo:Makron Books, 2000.

 

  1. Bibliografia Complementar:

 

·         CORMEN,T.H.; LEISERSON, C.E.; STAIN, C. and RIVEST, R.L. Algoritmos Teoria e Prática, 2002.

·         TEREDA, Routo.Desenvolvimento de algoritmo e estruturas de dados. São Paulo, Makron Books, 1991.