(P AA) 2 PACOTE DE APOIO A APRENDIZAGEM DE PROJETO E ANÁLISE DE ALGORITMOS: IMPLEMENTAÇÃO EM JAVA



Documentos relacionados
(P AA) 2 PACOTE DE APOIO A APRENDIZAGEM DE PROJETO E ANÁLISE DE ALGORITMOS: IMPLEMENTAÇÃO EM JAVA

(P AA) 2 PACOTE DE APOIO A APRENDIZAGEM DE PROJETO E ANÁLISE DE ALGORITMOS: IMPLEMENTAÇÃO EM JAVA

Construção de Wiki para a MISTOOL, uma Ferramenta de Aplicação do Método de Inspeção Semiótica

SIGLA - Sistema Integrado de Gestão Legislativa e Administrativa

JSensor: Uma plataforma paralela e distribuída para simulações de redes de sensores

Simulação de coleta de dados em redes de sensores sem o por robôs móveis utilizando a ferramenta Player/Stage

WEBDISC - Sistema Web para Gerenciamento de Disciplinas

Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM

Framework de comunicação para Webservices 2P2

DESENVOLVIMENTO DE FIRMWARE E SOFTWARE APLICATIVO DE CONTROLE PARA UMA MÁQUINA DE ENSAIOS GEOLÓGICOS

EProcessos: Um Sistema para Edição de Processos de Software

ESTUDO DE CASO: IMPLEMENTAÇÃO DE UM SERVIÇO DE PARA O DEPARTAMENTO DE COMPUTAÇÃO

Protocolo de comunicação para redes móveis aplicado ao trânsito

DESENVOLVIMENTO DE UM REPOSITÓRIO DE DADOS DO FUTEBOL BRASILEIRO

Sobre o Professor Dr. Sylvio Barbon Junior

Simulação de coleta de dados em redes de sensores sem o por robôs móveis utilizando a ferramenta Player/Stage

Proposta de uma Biblioteca Digital para Documentos Técnico-cientícos do Departamento de Computação da Universidade Federal de Ouro Preto

IMPLEMENTAÇÃO DE UM ALGORITMO DE PADRÕES DE SEQUÊNCIA PARA DESCOBERTA DE ASSOCIAÇÕES ENTRE PRODUTOS DE UMA BASE DE DADOS REAL

PRÓ-REITORIA DE EXTENSÃO, PESQUISA E INOVAÇÃO DIRETORIA DE PESQUISA E INOVAÇÃO Proposta de Projeto de Pesquisa

UMA ANÁLISE COMPARATIVA ENTRE SERVIDORES PROXY DE ALTO DESEMPENHO.

Mistool, uma Ferramenta para Aplicação Colaborativa do Método de Inspeção Semiótica

FATEC Cruzeiro José da Silva. Ferramenta CRM como estratégia de negócios

Universidade Federal do Vale do São Francisco. Estruturas de Dados. Professor: Marcelo Santos Linder

CST em Análise e Desenvolvimento de Sistemas 2ª Série Programação Estruturada II

COLETA E MINERAÇÃO DE DADOS DE REDES SOCIAIS

TerraME HPA (High Performance Architecture)

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

SWAT - Sistema Web de Avaliação de Trabalhos

Análise e Comparação de Métodos de Pré-processamento de Imagens e Extração de Características em Impressões Digitais

Desenvolvimento de um software de gerenciamento de projetos para utilização na Web

REFORÇO DE PROGRAMAÇÃO ESTRUTURADA EM LINGUAGEM C PARA GRADUAÇÃO EM ENGENHARIA ELÉTRICA

ESCOLA SUPERIOR ABERTA DO BRASIL - ESAB CURSO DE PÓS-GRADUAÇÃO LATO SENSU EM ENGENHARIA DE SISTEMAS JACK SUSLIK POGORELSKY JUNIOR

Projeto e Análise de Algoritmos Projeto de Algoritmos Introdução. Prof. Humberto Brandão humberto@dcc.ufmg.br

Programação para Computação

Framework de comunicação para Webservices 2P2

PESQUISA SOBRE O PERFIL DE ALUNOS NA UTILIZAÇÃO DE UM SITE DOCENTE DO ENSINO SUPERIOR

PCC173 - Otimização em Redes

Associação de Ensino Superior da Amazônia - AESA Faculdade de Ciências Humanas, Exatas e Letras de Rondônia - FARO

TESTES AUTOMATIZADOS COM JUNITE MOCKITO

Processos de Desenvolvimento de Software

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Lógica de Programação

UNIVERSIDADE FEDERAL DE SANTA CATARINA MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC

Plano de Ensino de Disciplina Ciência da Computação 2011

Implementação de um módulo simulador de robôs baseado em Unity3D para o SimBot - Simulador de Robôs para Lego NXT.

ANÁLISE DE TRÁFEGO EM REDES MUNI-WI

Programação Funcional. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2015.

SONS MAPS. Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM

UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE ENGENHARIA ELÉTRICA COLEGIADO DO CURSO DE GRADUAÇÃO EM ENGENHARIA ELÉTRICA/ENG.

Protocolo. nº041/2012 FORMULÁRIO PARA CADASTRO DE PROJETO DE PESQUISA E EXTENSÃO

Gerenciamento de Recursos para Grades Computacionais Node Control Center. Proposta para o Trabalho de Formatura Supervisionado

UML - Unified Modeling Language

DELEGACIA REGIONAL TRIBUTÁRIA DE

Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática

PLANO DE ENSINO. Período/ Fase: 1º Semestre: 1º Ano: 2011 Disciplina: Programação de Computadores I (PGC21) Carga Horária: 72 horas/aula

Histórico de Revisão Data Versão Descrição Autor

5COP096 TeoriadaComputação

AMBIENTE VIRTUAL DE APOIO AO ALUNO Pesquisa em andamento: resultados preliminares

Linguagem Matemática e as Artes

1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO

Universidade Federal de Alfenas

REALIDADE AUMENTADA APLICADA NA EDUCAÇÃO: ESTUDOS DOS SEUS BENEFÍCIOS

UMA ANÁLISE COMPARATIVA ENTRE SERVIDORES PROXY DE ALTO DESEMPENHO

DEMONSTRATIVO DE CÁLCULO DE APOSENTADORIA - FORMAÇÃO DE CAPITAL E ESGOTAMENTO DAS CONTRIBUIÇÕES

Feature-Driven Development

SISTEMA COMPUTACIONAL PARA ANÁLISES DE DADOS EM AGRICULTURA DE PRECISÃO

TABELA PRÁTICA PARA CÁLCULO DOS JUROS DE MORA ICMS ANEXA AO COMUNICADO DA-46/12

Júlio Arakaki Ítalo S. Vega

UNIVERSIDADE DO ESTADO DE SANTA CATARINA - UDESC DCC Departamento de Ciência da Computação Joinville-SC

Universidade Federal de Santa Catarina Centro Tecnológico Curso de Sistemas de Informação. Proposta de Trabalho de Conclusão de Curso

GDOC INTERESSADO CPF/CNPJ PLACA

PROJETO DE PESQUISA: UTILIZAÇÃO DE CALCULADORA CIENTÍFICA MODELO CASIO fx-82ms.

ATIVIDADES PRÁTICAS SUPERVISIONADAS

Web site. Objetivos gerais. Introdução. Profa. Patrícia Dockhorn Costa

PRÓ-TRANSPORTE - MOBILIDADE URBANA - PAC COPA CT /10

PRÓ-TRANSPORTE - MOBILIDADE URBANA - PAC COPA CT /10

DATA DIA DIAS DO FRAÇÃO DATA DATA HORA DA INÍCIO DO ANO JULIANA SIDERAL T.U. SEMANA DO ANO TRÓPICO

Plano de Trabalho Docente Ensino Técnico

PROGRAMA COMPUTACIONAL PARA CÁLCULOS ESTATÍSTICOS

GERÊNCIA DE DADOS SEMIESTRUTURADOS. Prof. Angelo Augusto Frozza, M.Sc.

ISSN ÁREA TEMÁTICA:

Ficha da Unidade Curricular (UC)

Universidade Católica Dom Bosco

Sistemas de Informações Gerenciais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

PROFESSOR: CRISTIANO MARIOTTI

APLICATIVO MOBILE CATÁLOGO DE PÁSSAROS - PLATAFORMA ANDROID/MYSQL/WEBSERVICE

I. Dados Identificadores Tecnologia em Análise e Desenvolvimento de Sistemas Linguagem de Orientação a Objeto Avançado Luís Carlos dos Santos

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Implementação de algoritmos para consultas de segmentos em janelas

Sumário. 5COP096 Teoria da Computação Aula 8 Pesquisa em Memória Primária

Deve ser claro, conciso e conter de forma resumida o assunto a ser pesquisado.

Ensino de Programação nas Escolas Públicas: Criando. Novos Gênios

DAS Inteligência Artificial Aplicada à Controle de Processos e Automação Industrial

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

PERSPECTIVAS DO PROJETO DE ENSINO FÁBRICA DE SOFTWARE *

Transcrição:

Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM (P AA) 2 PACOTE DE APOIO A APRENDIZAGEM DE PROJETO E ANÁLISE DE ALGORITMOS: IMPLEMENTAÇÃO EM JAVA Aluno: Thiago Andrade Pereira Matricula: 07.1.4177 Orientador: Andréa Iabrudi Tavares Ouro Preto 30 de março de 2011

Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM (P AA) 2 PACOTE DE APOIO A APRENDIZAGEM DE PROJETO E ANÁLISE DE ALGORITMOS: IMPLEMENTAÇÃO EM JAVA Proposta de monograa apresentada ao curso de Bacharelado em Ciência da Computação, Universidade Federal de Ouro Preto, como requisito parcial para a conclusão da disciplina Monograa I (BCC390). Aluno: Thiago Andrade Pereira Matricula: 07.1.4177 Orientador: Andréa Iabrudi Tavares Ouro Preto 30 de março de 2011

Resumo O projeto e análise de algoritmos é um campo da ciência da computação que visa introduzir conceitos mais avançados de desenvolvimento de algoritmos, análise de complexidade de problemas computacionais, comparar diferentes algoritmos para a solução de um mesmo problema, descrever e empregar os princípios, métodos e técnicas fundamentais para projeto de algoritmos corretos e ecientes. Por essa razão, o estudo de projeto e análise de algoritmos é fundamental para toda a computação. Este trabalho apresenta uma biblioteca de funções que implementam as principais técnicas de projeto de algoritmos para auxiliar no ensino da disciplina de Projeto e Análise de Algoritmos ministrada para o curso de Ciência da Computação da Universidade Federal de Ouro Preto. Palavras-chave: Técnincas de projeto de algoritmos.

Sumário 1 Introdução 1 2 Justicativa 2 3 Objetivos 3 3.1 Objetivo geral................................ 3 3.2 Objetivos especícos............................ 3 4 Metodologia 4 5 Cronograma de atividades 5

Lista de Figuras Lista de Tabelas 1 Cronograma de Atividades......................... 6

1 Introdução Projeto e Análise de Algoritmos é a disciplina da Ciência da Computação que estuda o comportamento dos algoritmos, pois o conhecimento do comportamento de um algoritmo têm um papel decisivo no projeto de algoritmos ecientes. O propósito principal desse curso é apresentar como analisar e projetar algoritmos ecientes, através do estudo de uma variedade de algoritmos já bem conhecidos e considerados clássicos na Computação [4]. Sabendo disso, este trabalho propõe a criação de uma biblioteca que implementa um conjunto de técnicas de projeto de algoritmos estudadas na disciplina, que visa auxiliar no ensino do contéudo de Projeto e Análise de Algoritmos ministrada pela Universidade Federal de Ouro Preto para o curso de Ciência da Computação. O uso dessa biblioteca seria um poderoso recurso didático que contribuiria na consolidação do conteúdo nos alunos. Esse projeto toma como base a aprendizagem baseada em exemplos. De acordo com [2], através de uma série de exemplos de um conceito, o aluno primeiramente analisa esses casos especícos para depois chegar à compreensão dos princípios e teorias. Para cada problema, ou seja, cada técnica de projeto de algoritmos, teremos um exemplo de estudo de caso. A biblioteca já trará implementada em si a solução de um exemplo de problema em que cada técnica é aplicada. Conceitos de orientação a objetos e programação genérica também serão fortemente abordados nesse trabalho. Segundo [3], a programação genérica nos permite criar modelos gerais, ou seja, métodos genéricos e classes genéricas, permitindo aos programadores que especiquem com uma única declaração de método, um conjunto de métodos relacionados ou, com uma única declaração de classe, um conjunto de tipos relacionados. As classes abstratas e métodos abstratos serão parte da arquitetura da biblioteca, o que contribuirá para a experiência do aluno em programação de forma genérica e orientação a objeto. 1

2 Justicativa A disciplina de Projeto e Análise de Algoritmos é fundamental e obrigatória para o curso de Ciência da Computação e por isso, uma biblioteca de métodos que implementam as técnicas de projeto de algoritmos beneciaria o aluno na aprendizagem do conteúdo no sentido de proporcionar agilidade e facilidade no momento em que a técnica é utilizada para resolver um problema. O objetivo é que o aluno entenda onde, quando e o porque de cada passo que a técnica possui para a solução do problema, por isso a implementação da técnica está contida na biblioteca, cabe ao aluno implementar os passos. Além disso, é comum os alunos terem diculdades de implementação e o uso desse pacote de funções proporcionaria familiaridade com boas práticas de programação, aprimoraria conceitos de orientação a objetos e programação genérica. 2

3 Objetivos 3.1 Objetivo geral O objetivo deste trabalho é implementar uma biblioteca com as principais técnicas de projeto de algoritmos para ser usada na disciplina de Projeto e Análise de Algoritmos. Estas técnicas são: Dividir para Conquistar, Programação Dinâmica, Abordagem Gulosa, Backtracking e Branch-and-Bound. Todas elas serão implementadas de forma genérica para ser capaz de resolver quaisquer natureza de problema em que é viável a aplicação da técnica. 3.2 Objetivos especícos Gerar uma boa documentação de código para ser usada como exemplo de documentação. Gerar uma página do projeto na web para download do código. Realizar testes de desempenho em algumas técnicas. 3

4 Metodologia Para a implementação da biblioteca será utilizada a linguagem de programação Java [5] e o ambiente de programação Eclipse IDE for Java Developers na versão Helios Service Release 1 [7]. Para a documentação do código será utilizada a ferramenta Doxygen [6], que é um sistema de documentação de códigos para diversas linguagens de programação. A metodologia adotada para o desenvolvimento do trabalho será composta por etapas. Para cada uma das cinco técnicas de projetos a ser implementada será realizado: O projeto das classes e dos algoritmos; Implementação; Documentação; Testes; Para o auxílio nos projetos de classe, algoritmos e implementação será seguido os autores [1] e [8]. 4

5 Cronograma de atividades Na Tabela 1, é apresentada uma proposta das atividades a serem desenvolvidas: 1. Denição da arquitetura geral da biblioteca; 2. Projeto das classes e algoritmos da técnica Dividir para Conquistar e implementação; 3. Documentação de código da técnica Dividir para Conquistar; 4. Projeto das classes e algoritmos da técnica de Programação Dinâmica e implementação; 5. Documentação de código da técnica de Programação Dinâmica; 6. Projeto das classes e algoritmos da técnica da abordagem Gulosa e implementação; 7. Documentação de código da técnica da abordagem Gulosa; 8. Projeto das classes e algoritmos da técnica de Backtracking e implementação; 9. Documentação de código da técnica de Backtracking; 10. Projeto das classes e algoritmos da técnica de Branch-and-Bound e implementação; 11. Documentação de código da técnica de Branch-and-Bound; 12. Testes; 13. Construção da página do projeto; 14. Redigir a Monograa. 5

Atividades Mar Abr Mai Jun Jul Ago Set Out Nov Dez 1 X 2 X 3 X 4 X 5 X 6 X 7 X 8 X 9 X 10 X 11 X 12 X X 13 X X X X X X X 14 X X X Tabela 1: Cronograma de Atividades. 6

Referências [1] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Cliord Stein. Algoritmos - Teoria e Prática. Elsevier, 2 edition, 2002. [2] Helena Noronha Cury. Estilos de aprendizagem de alunos de engenharia. XXVIII Congresso Brasileiro de Ensino de Engenharia. [3] H. M. Deitel and P. J. Deitel. Java Como Programar. Pearson Prentice Hall, 6 edition, 2005. [4] Elton J. Silva. projeto e análise de algoritmos. Technical report, Departamento de Computação, Universidade Federal de Ouro Preto, 2010. [5] Java technology. http://www.oracle.com/us/technologies/java/index.html. [6] Doxygen. http://www.stack.nl/~dimitri/doxygen/, 1997. [7] Eclipse ide for java ee developers. http://www.eclipse.org/downloads/ packages/eclipse-ide-java-ee-developers/heliossr2, 2000. [8] Steven S. Skiena. The Algorithm Design Manual. Springer, 2 edition, 2008. 7