Projeto Pedagógico de Ensino Algoritmos

 

 

Professores: Anderson Medeiros da Silva  -  and2808742000@yahoo.com.br

                    Cicero Pereira de Souza  -  csouza96@yahoo.com.br

 

      Resumo. Este projeto tem o objetivo de realizar junto aos alunos do Curso de Licenciatura em Computação a confecção de um plano pedagógico, elaborado no intuito de facilitar a aprendizagem da disciplina de algoritmos. Elaborado a partir de experiências anteriores e textos relacionados com o tema, onde se observou a grande dificuldade dos alunos com esta disciplina, tentando através de novos métodos e idéias inovadoras proporcionar aos alunos um aprendizado mais eficaz.

 

1. Introdução

Este plano pedagógico tem como objetivo a preparação de um curso da disciplina de algoritmos, onde tem por metas a facilitação do aprendizado através do uso de técnicas inovadoras de ensino e do aproveitamento dos conhecimentos cotidianos dos alunos relacionados com os problemas solucionáveis através de algoritmos. Promovendo ainda uma maior aproximação entre professor e aluno, proporcionando uma interação construtiva entre ambos.

 

2. Trabalhos Relacionados

    2.1 Paper “Como Ensinar Programação” da Universidade Nova de Lisboa

    2.2 Paper “Teaching Algorithms in Secondary Education: A Collaborative Approach” da Universidade de Patras, Grecia.

2.3 Paper “Experiências Positivas para o Ensino de Algoritmos” do Centro de Ciências Formais da Tecnologia – Universidade Tiradentes (UNIT) de Aracaju –SE.

2.4 Site www.cin.ufpe.br/~joa

 

3. Projeto Pedagógico

 

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO

Departamento de Física e Matemática

Curso de Licenciatura em Computação

 

Disciplina: Algoritmos Carga-horária: 60 h/a     

Pré-Requisitos:   Introdução a Programação / Matemática Discreta

Período Letivo: 2005/2                                    Turma: LC1

Professores: Anderson Medeiros da Silva  -  and2808742000@yahoo.com.br

                     Cicero Pereira de Souza  -  csouza96@yahoo.com.br

 

Plano de Ensino  

O Curso de Algoritmos tem como objetivo formar profissionais capazes de desenvolver algoritmos empregando estruturas básicas, linguagens de programação e as técnicas atuais.

 

Objetivos

1. Capacitar o acadêmico ao desenvolvimento de algoritmos com emprego de técnicas, tais como: refinamento sucessivo e recursividade;

2. Estudar a utilização de estruturas de dados básicas;

3. Iniciar o acadêmico à utilização de uma linguagem de programação procedimental;

4. Desenvolver a capacidade de analisar e resolver problemas de solução analítica e

formular soluções estruturadas em uma linguagem algorítmica.

 

Ementa

Estudo de formas de representação do pensamento lógico através de técnicas de desenvolvimento de algoritmos e da representação e manipulação de dados na memória principal e secundária de um computador

 

 

Conteúdo Programático

1 Conceitos Básicos

1.1  Algoritmo

  1.2 Linguagens de Programação

  1.3 Programa 

 

2 Linguagem Algorítmica

  2.1 Constantes

  2.2 Variáveis

  2.3 Comentários

  2.4 Expressões Aritméticas

  2.5 Expressões Lógicas

  2.6 Expressões Literais

  2.7 Comando de Atribuição

  2.8 Comandos de Entrada e Saída 

 

3 Estruturas de Controle

  3.1 Estrutura seqüencial

  3.2 Estruturas de decisão

        3.2.1 Estrutura “Se”

         3.2.2 Estrutura “Escolha caso”

  3.3 Estruturas de Repetição

        3.3.1 Laços contados (estrutura “Para...”)

        3.3.2 Laços condicionais

                   3.3.2.1 Estrutura “Enquanto ...”

                    3.3.2.2 Estrutura “Repita ...”

 

  4 Modularização

     4.1 Introdução  

           4.1.1 Porque modularizar?

           4.1.2 Conceito de Módulo 

     4.2 Escopo de Variáveis

           4.2.1Variáveis Globais

           4.2.2 Variáveis Locais

      4.3 Funções

      4.4 Procedimentos

      4.5 Passagem de parâmetros

            4.5.1 Passagem Por Valor

            4.5.2 Passagem Por Referência

       4.6 Recursividade

             4.6.1 Procedimentos Recursivos

             4.6.2 Funções Recursivas

 

  5 Estruturas de Dados

      5.1 Introdução

      5.2 Variáveis Compostas Homogêneas

            5.2.1 Variáveis Compostas Unidimensionais (vetores)

            5.2.2 Variáveis Compostas Multidimensionais (Matrizes)

      5.3 Variáveis Compostas Heterogêneas

            5.3.1 Registros

            5.3.2 Conjuntos de Registros

       5.4 Alocação Dinâmica de memória

             5.4.1Variáveis Dinâmicas

             5.4.2 Listas Lineares

             5.4.2.1 Listas simplesmente encadeadas

             5.4.2.2 Listas duplamente encadeadas

 

  6 Algoritmos Clássicos

      6.1 MDC

      6.2 Seqüência de Fibonacci

      6.3 Caixeiro Viajante

]

  7 Cadeias de Caracteres

      7.1 Conceitos e Terminologia

      7.2 Operações Básicas sobre Cadeias

      7.3 Aplicações Básicas em Cadeias

 

  8 Arquivos

     8.1 Conceito de Arquivo

     8.2 Declaração

     8.3 Abertura e Fechamento de Arquivos

     8.4 Organização de Arquivos

     8.4.1 Acesso Seqüencial

     8.4.2 Acesso Direto

 

Metodologia

Aulas teóricas expositivas, com utilização de sites da Web, quadro negro, apresentação do Powerpoint no Netmeeting e/ou vídeos educativos relativos ao conteúdo, sempre ilustrando com ferramentas de apoio ao ensino de algoritmos na internet e/ou através da interação dos problemas relacionados ao cotidiano e os algoritmos. Aulas práticas em laboratório, onde os alunos farão a implementação dos algoritmos em linguagem algorítmica com o uso de ferramentas software livre, que também serão usadas para a prática de jogos e competições. As aulas desenvolver-se-ão voltadas para a resolução de problemas e expressão das soluções em uma linguagem algorítmica especificada para esse fim. Exposições/discussões teóricas serão realizadas em função das atividades relacionadas aos problemas propostos. 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.  Os alunos terão algumas atividades de resolução de problemas desenvolvidas em duplas, que serão constantemente alteradas mediante sorteio em sala de aula.

 

Avaliação

1ª Avaliação: Prova escrita, individual e sem consulta:  60 pontos 

                     Participação e freqüência: 15 pontos

                    Trabalhos de implementação: 25 pontos

 

2ª Avaliação: Prova escrita, individual e sem consulta: 50 pontos

                     Participação e freqüência: 20 pontos

                     Trabalhos de implementação: 30 pontos

 

 3ª Avaliação: Prova escrita, individual e sem consulta: 50 pontos 

                      Participação e freqüência: 20 pontos

                     Trabalhos de implementação: 30 pontos

 

Avaliação Final: uma prova escrita, individual e sem consulta, abrangendo todo o conteúdo ministrado durante o semestre letivo. 

 

Obs.1: Entre os trabalhos aplicados, haverá trabalhos realizados em sala de aula, os quais terão como objetivo medir a participação dos alunos em classe, em vista disso, estes trabalhos somente serão aceitos para os alunos que estiverem presentes na sala no dia da aplicação do trabalho.

Obs.2: Além dos trabalhos extra-classe e os trabalhos em classe, eventualmente, serão dados pontos extras para os alunos que participarem com destaque da execução de algum exercício em sala ou conseguirem se destacar nas jogos e competições realizados através das ferramentas softwares livres. Estes pontos extras serão somados à nota do aluno, e caso esta ultrapasse 100 pontos, os pontos restantes serão transferidos para a próxima avaliação. Os pontos extras excedentes não serão transferidos para a nota do exame final. 

Obs.3: Para os alunos dispensados de freqüência somente será considerada como avaliação a prova teórica, individual e sem consulta, valendo 100 pontos.

Cronograma  

Data

Conteúdo

03/03/05

Apresentação da disciplina. Conceitos Básicos: Algoritmo, Linguagens de Programação e Programa .

10/03/05

Introdução a algoritmos. Linguagem Algorítmica: Constantes, Variáveis, Comentários, Expressões Aritméticas, Expressões Lógicas, Expressões Literais, Comando de Atribuição e Comandos de Entrada e Saída.

17/03/05

Exercícios de revisão e fixação (competições).

24/03/05

Estruturas de Controle e Estruturas de Repetição.

31/03/05

Exercícios de Revisão e Fixação (jogos).

07/04/05

Modularização: Introdução, Escopo de Variáveis, Funções, Procedimentos, Passagem de parâmetros, Recursividade.

14/04/05

Exercícios de Revisão e Fixação (competições).

21/04/05

Tiradentes – Feriado Nacional

28/04/05

1ª Avaliação

05/05/05

Estruturas de Dados: Introdução, Variáveis Compostas Homogêneas, Variáveis Compostas Heterogêneas e Alocação Dinâmica de memória

12/05/05

Exercícios de Revisão e Fixação (jogos).

19/05/05

Algoritmos Clássicos (MDC, Seqüência de Fibonacci e Caixeiro Viajante)

26/05/05

Cadeias de Caracteres

02/06/05

Exercícios de Revisão e Fixação (competições).

09/06/05

Arquivos

16/06/05

Exercícios de Revisão e Fixação (jogos).

23/06/05

Revisão de conteúdo

30/06/05

2ª Avaliação

07/07/05

3ª Avaliação 

14/07/05

Avaliação Final

 

 

3. Considerações

Este projeto pedagógico para cursos de Licenciatura em Computação, tem, como eixo principal, a analise dos conteúdos vistos na disciplina Prática de Ensino de Algoritmos. Entre os vários problemas verificados no estudo da melhor maneira de ensinar a disciplina de algoritmos, foram constatados a falta de motivação dos alunos, relacionamento professor-aluno, avaliação, falta de material didático associada a falta de planejamento das aulas e falta de didática por parte dos professores. Lidaremos com estas questões da seguinte maneira: para o problema da motivação, incentivaremos os estudantes através de pontuação por participação nas aulas, exercícios, jogos e relacionamento dos problemas com questões do cotidiano. Para o problema de relacionamento professor-aluno, procuraremos uma maior interação com todo o grupo, agindo como uma equipe em busca de um objetivo comum, proporcionando uma liberdade de comunicação professor e alunos. Procurando criar uma relação de afeto e cooperação para orientar o melhor caminho do aprendizado. Para o problema da avaliação, distribuiremos o peso da nota final entre várias atividades no decorrer do curso, como trabalhos, participação na aula, jogos e etc. De modo a fazer com que a avaliação não seja uma sanção ao aluno e sim um parâmetro para o professor verificar as dificuldades dos mesmos com relação à matéria, além de tirar todo o peso de uma única prova. Com relação ao material didático utilizaremos endereços na Web, trechos de alguns livros do gênero e disponibilização de toda matéria do curso em arquivos com apresentações no Powerpoint e textos, sendo que o conteúdo será trabalhado de forma flexível, podendo ser alterado no decorrer do curso, de acordo com a necessidade do curso e as diferenças entre os alunos. O planejamento de todo o curso está disponibilizado aos alunos desde o primeiro dia de aula. Para o problema da falta de didática dos professores, utilizaremos todas técnicas adquiridas no curso de Licenciatura em Computação, além de procurarmos nos guiar pela teoria construtivista, onde o conhecimento será desenvolvido pela interação professor-aluno.

            Pelo acima exposto verifica-se a necessidade de se reformular a estrutura e os métodos de ensino da disciplina de algoritmos, o que leva a uma implementação de novas experiências e técnicas a serem empregadas nesta disciplina, visando um maior índice de aproveitamento do conteúdo repassado, melhorando assim os índices de aprovação e aumentando o índice de assimilação do conteúdo pelos alunos.

 

4. Bibliografia Básica

Livros:

Bibliografia Básica

TREMBLAY, J.P e Bunt, R. B.; Ciência dos Computadores - Uma abordagem algorítmica. McGraw-Hill TORBELLONE, A.L.V.; Lógica de Programação - A construção de algoritmos e estruturas de dados. Makron-Books, 1993 GUIMARÃES, A. e Lages, N. A. C.  Algoritmos e Estrutura de Dados. Editora LTC, 1994. FARRER, H. et al. Algoritmos Estruturados. Editora LTC, 3ª Edição, 1999.

Bibliografia Complementar

Cormen, Thomas H. et. al. Algoritmos: Teoria e Prática. Editora Campus, 2002

HOROWITZ, E. et al. Fundamentos de Estruturas de Dados. Editora Campus, 1984. TENEMBAUM, A. M. et al. Data Structures Using Pascal, Prentice-Hall. VELOSO, P.A.S. et al. Estrutura de Dados. Editora Campus. WIRTH, N. Algorithms + data structures= programs. Editora Prentice-Hall. O´BRIEN, S. Turbo Pascal 6- Completo e Total. McGraw-Hill, 1992. SCHILDT, H. Turbo Pascal Avançado. McGraw-Hill, 1988 SCHILDT, H. Turbo C Guia do Usuário. McGraw-Hill, 1989 SCHILDT, H. C Completo e Total. McGraw-Hill, 1991

 

Links:

Software de Apoio ao Ensino de Algoritmos –

http://www.niee.ufrgs.br/ribie98/TRABALHOS/151

Software Educacional –

http://www.centrorefeducacional.com.br/sofedu.htm1