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.
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.
·
“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.
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.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 |
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.
·
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.
·
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.