UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA Autorizada pelo Decreto Federal nº 77.496 de 27/04/76 Reconhecida pela Portaria Ministerial nº 874/86 de 19/12/86 Recredenciada pelo Decreto Estadual Nº 9.271 de 14/12/2004 DIVISÃO DE ASSUNTOS ACADÊMICOS Secretaria Geral de Cursos PROGRAMA DE DISCIPLINA DEPARTAMENTO DE CIÊNCIAS EXATAS CÓDIGO: EXA804 DISCIPLINA: PROGRAMAÇÃO CARGA HORÁRIA: 180h EMENTA: Estudo aprofundado de metodologias de programação, modelos de algoritmos e estruturas de dados avançadas que compõem os programas de computador, além das estruturas matemáticas discretas subjacentes aos modelos estudados. Este estudo integrado é composto dos seguintes módulos: M4.1 - Algoritmos e Programação II M4.2 - Estruturas de Dados M4.3 - Estruturas Discretas MÓDULO 4.1 : EXA 805 - ALGORITMOS E PROGRAMAÇÃO II C.H.: 60 h Cred.: 3 (2.1.0) Tipos abstratos de dados; independência entre especificação e implementação. Princípios de orientação a objetos: objetos, classes, atributos, métodos, mensagens, encapsulamento, herança, composição, polimorfismo, interfaces, acoplamento, ligação dinâmica. Interfaces gráficas e programação orientada a eventos. Estruturas de dados básicas: tabelas, listas simples e encadeadas, pilhas, filas. Métodos de ordenação. Tratamento de exceções. Princípios de testes e depuração de programas. Construção e uso de bibliotecas; compilação independente e em separado. MÓDULO 4.2 : EXA 806 - ESTRUTURAS DE DADOS C.H.: 60 h Cred.: 3 (2.1.0) - 1 de 12 - UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA Autorizada pelo Decreto Federal nº 77.496 de 27/04/76 Reconhecida pela Portaria Ministerial nº 874/86 de 19/12/86 Recredenciada pelo Decreto Estadual Nº 9.271 de 14/12/2004 EMENTA (Continuação): Filas com prioridades. Árvores: terminologia e implementação. Árvores binárias, balanceamento de árvores binárias, árvores B. Conjuntos: conceituação, implementação, métodos de representação. Métodos de busca e ordenação. Hashing. Grafos orientados e não orientados. Gerenciamento de memória. Organização de arquivos. MÓDULO 4.3 : EXA 807 - ESTRUTURAS DISCRETAS C.H.: 60 h Cred.: 3 (2.1.0) Conjuntos, relações, funções. Indução e recursão. Princípios de contagem, combinatória. Grafos e árvores: grafos não orientados e orientados, árvores, árvore geradora. Estruturas algébricas. Reticulados e álgebras booleanas. Técnicas de demonstração de teoremas. OBJETIVOS: • • • • • • • • • • Geral: Ser capaz de desenvolver software segundo o paradigma da orientação a objetos, utilizando apropriadamente as estruturas de dados fundamentais, com domínio das abstrações da matemática discreta subjacentes aos modelos estudados. Específicos: Compreender os conceitos fundamentais da programação orientada a objetos. Desenvolver sistemas de software utilizando uma linguagem orientada a objetos (Java). Compreender como programas em Java podem ser adequadamente escritos, estruturados e documentados; Explorar um ambiente de suporte a Java, incluindo ferramentas e bibliotecas; Compreender conceitos avançados da tecnologia de software orientada a objetos, incluindo linguagens, análise, arquiteturas, desenvolvimento, refinamento, padrões, aplicações e sistemas orientados a objetos. Compreender as estruturas de dados fundamentais mais utilizadas, sua implementação, sua manipulação, suas aplicações e seus custos. Compreender o impacto da utilização de certas estruturas de dados na solução de problemas Decidir sobre as estruturas de dados que melhor se adaptam a solução de um determinado problema. Desenvolver técnicas para a implementação das estruturas. - 2 de 12 - UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA Autorizada pelo Decreto Federal nº 77.496 de 27/04/76 Reconhecida pela Portaria Ministerial nº 874/86 de 19/12/86 Recredenciada pelo Decreto Estadual Nº 9.271 de 14/12/2004 OBJETIVOS (Continuação): • Compreender a complexidade (custo) de um algoritmo, o que torna possível compará-lo com outros e decidir se um algoritmo é ótimo. • Desenvolver algoritmos de busca, inserção e remoção, bem como aplicações práticas de tais estruturas na solução de problemas reais. • Pesquisar vários algoritmos de ordenação, compreendendo as vantagens e desvantagens dos mesmos. • Perceber a importância da escolha de algoritmos eficientes • Compreender princípios, técnicas e metodologias associadas a problemas de estruturas discretas. • Compreender conceitos matemáticos fundamentais às disciplinas da computação • Compreender a aplicação, em situações práticas, dos conceitos matemáticos • Aprender a encontrar modelos matemáticos que representem certos problemas concretos (noções de modelagem matemática), em especial quando estes se referem a situações práticas • Familiarizar-se com a escrita matemática formal e a linguagem computacional • Representar fenômenos na forma algébrica e na forma gráfica • Conhecer técnicas de resolução de problemas • Desenvolver a capacidade de raciocínio abstrato (lógico-matemático) como um todo • Obter uma visão abrangente de uma parte significativa da Computação. • Aplicar os conceitos básicos da Matemática Discreta como uma ferramenta Matemática para investigações e aplicações precisas em Computação METODOLOGIA: • • • • A metodologia será um híbrido de Grupos Tutoriais ( GT), Consultorias Individuais (CI) e Coletivas (CC) e Aulas Expositivas (AE). A seguir apresentamos os alcances de cada uma destas estratégias metodológicas: Durante todo o curso serão realizadas atividades seguindo a metodologia PBL (Aprendizagem Baseada em Problemas), a qual consistirá basicamente de grupos tutoriais (GT) que objetivam solucionar os problemas e/ou projetos que serão propostos. Esses problemas devem ser resolvidos conforme critérios determinados em documento anexo a cada problema; Os GTs, baseados na estratégia de PBL (Aprendizagem baseada em problemas), permitirão ao aluno chegar ao conhecimento através do processo de reflexão consigo mesmo e das relações com os outros alunos do grupo; As CIs e CCs permitirão ao aluno estabelecer diferentes canais de diálogo no processo de resolução de problemas. As AEs serão aulas expositivas dialogadas com o objetivo de introduzir assuntos que serão tratados mais detalhadamente nos problemas, complementar o processo de - 3 de 12 - UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA Autorizada pelo Decreto Federal nº 77.496 de 27/04/76 Reconhecida pela Portaria Ministerial nº 874/86 de 19/12/86 Recredenciada pelo Decreto Estadual Nº 9.271 de 14/12/2004 METODOLOGIA (Continuação): aprendizagem após o final de um problema ou até mesmo discutir outros assuntos que não serão abordados no GT. Material Utilizado Para os GTs: • Salas acondicionadas para PBL, com quadro branco, kit para escrever no quadro, cadeiras e mesa de reunião. Para as AEs e CCs: • Salas tradicionais de aula, com quadro negro ou branco, kit para escrever nos quadros, retro-projetor, computador e canhão multimídia. Para as CIs: • Sala do professor com quadro branco, kit para escrever nos quadros, computador, impressora, cadeiras e mesa. AVALIAÇÃO: No componente curricular estudo integrado, a avaliação tem duas dimensões: a dimensão global, onde se avaliam as competências gerais e específicas adquiridas pelo estudante, e a dimensão modular, onde se avalia a proficiência de cada estudante no conhecimento dos assuntos específicos de cada módulo componente do estudo integrado. Além disso, o estudo integrado será dividido em duas unidades, para que o estudante possa refletir sobre sua situação na metade do curso e, caso necessário, realizar correções de rumo no processo de aprendizagem. Avaliação do Estudo Integrado: O conceito de cada uma das duas unidades será calculado a partir de uma média ponderada (MPEI) de produtos de grupos tutoriais (PGT) e do desempenho nos grupos tutoriais (DGT), dada abaixo: MPEI= 0,7 PGT + 0,3 DGT • Ao final de cada problema, os alunos deverão, individualmente ou em grupo, gerar um produto ou apresentação conforme designado para cada problema; • A média PGT será calculada a partir de uma ponderação das notas obtidas nos produtos ou apresentações gerados; • Durante os Grupos Tutoriais, os alunos serão avaliados por seu desempenho (DGT), sendo consideradas as dimensões de participação, contribuição efetiva, criatividade, entrosamento e respeito mútuo em cada um dos passos do ciclo PBL; - 4 de 12 - UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA Autorizada pelo Decreto Federal nº 77.496 de 27/04/76 Reconhecida pela Portaria Ministerial nº 874/86 de 19/12/86 Recredenciada pelo Decreto Estadual Nº 9.271 de 14/12/2004 AVALIAÇÃO (Continuação): • A média ponderada de cada unidade será transformada em um conceito, utilizando as escalas tradicionais de conversão de notas para conceitos usadas na UEFS. Os dois conceitos resultantes serão os conceitos finais para a avaliação integrada dos alunos, correspondente a um dos requisitos para a aprovação no estudo integrado, que é a avaliação das competências; • As datas para entrega dos produtos da resolução dos problemas serão definidas ao longo do curso. Avaliação do Módulo: A nota final de cada módulo será calculada a partir de uma média ponderada (MPM) de produtos de grupos tutoriais referentes ao módulo (PGTM) e avaliações de conteúdo do módulo (AC), dada abaixo: Algoritmos e Programação II: MPM = 0,7 PGTM + 0,3 AC Estruturas de Dados MPM = 0,5 PGTM + 0,5 AC Estruturas Discretas MPM = 0,2 PGTM + 0,8 AC • A média PGTM será calculada a partir de uma ponderação das notas obtidas nos produtos ou apresentações gerados dos problemas relativos ao módulo em questão; • Cada problema que agregue conteúdo do módulo terá uma avaliação específica dos aspectos relativos a este conteúdo (não necessariamente a mesma nota da avaliação integrada do problema/projeto) e esta nota será ponderada na média PGTM de acordo com a participação do conteúdo do problema no total do conteúdo do módulo; • As provas tratarão dos conteúdos abordados no módulo e serão provas escritas, individuais e sem consulta. • A média ponderada MPM não será transformada em um conceito, pois a avaliação dos módulos é realizada através de notas. • As datas para entrega dos produtos da resolução dos problemas e provas serão definidas ao longo do curso. Provas Finais: • Não obtendo conceito suficiente na avaliação de competências do estudo integrado, o estudante poderá fazer prova final do estudo integrado, e o conceito final será de acordo com o sistema de avaliação vigente na UEFS. • Não obtendo nota igual o superior a 7,0 (sete) na avaliação da proficiência no módulo, o estudante poderá fazer prova final do módulo. O conceito final do módulo será uma média - 5 de 12 - UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA Autorizada pelo Decreto Federal nº 77.496 de 27/04/76 Reconhecida pela Portaria Ministerial nº 874/86 de 19/12/86 Recredenciada pelo Decreto Estadual Nº 9.271 de 14/12/2004 AVALIAÇÃO (Continuação): ponderada do conceito anterior (peso seis) com a prova final (peso quatro). O conceito final do módulo deverá ser igual ou superior a 5,0 (cinco) para aprovação no módulo. Aprovação no Estudo Integrado: Para ser aprovado no estudo integrado, o estudante precisa cumprir os seguintes requisitos: • Ter frequência igual ou superior a 75% da carga horária efetiva ministrada no estudo integrado, caso contrário haverá reprovação por freqüência e o estudo integrado completo deverá ser cursado novamente; • Ser aprovado na avaliação integrada das competências para o estudo integrado, caso contrário haverá reprovação por conceito e o estudo integrado completo deverá ser cursado novamente; • Caso os requisitos anteriores tenham sido cumpridos, o estudante deverá ainda ser aprovado na avaliação de proficiência de cada módulo componente do estudo integrado, caso contrário sua situação ficará pendente até que seja aprovado em novas avaliações do módulo em período(s) subsequente(s), não necessitando, entretanto, freqüentar novamente as atividades regulares do estudo integrado, bastando realizar as atividades de avaliação. CONTEÚDO PROGRAMÁTICO: 1) 2) 3) AP2: Noções básicas de orientação a objetos • Objetos e classes; • Atributos e métodos; • Mensagens; • Encapsulamento; • Construtores e sobrecarga de métodos; AP2: Interfaces gráficas e programação orientada a eventos • Componentes e contâineres; • Rótulos, caixas de texto e áreas de texto; • Botões simples, botões de rádio, botões liga-desliga; • Listas de seleção; • Tratamento de eventos (mouse, teclado, foco, etc.); • Interfaces de tratamento de eventos e classes adaptadoras; • Gerenciadores de layout; • Janelas, painéis, independência da GUI; • Menus (simples e de contexto); • Outros componentes gráficos. AP2: Tratamento de exceções • Tratamentos a priori e a posteriori • Mecanismos de tratamento de exceções do Java - 6 de 12 - UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA Autorizada pelo Decreto Federal nº 77.496 de 27/04/76 Reconhecida pela Portaria Ministerial nº 874/86 de 19/12/86 Recredenciada pelo Decreto Estadual Nº 9.271 de 14/12/2004 CONTEÚDO PROGRAMÁTICO (Continuação): 4) ED: Conjuntos • Diagrama de Venn; • Paradoxo de Russell; • União; • Interseção; • Complemento; • Diferença; • Conjunto de Partes; • Produto Cartesiano; • Relação entre Lógica e Teoria de Conjuntos; • Teoria de Conjuntos e linguagem de Programação; • Teoria de Conjuntos e Teoria da Computação. 5) ED: Relações • Relação; • Relação como Matriz; • Relação dual; • Composição de Relações; • Relação Funcional; • Relação Injetora; • Monomorfismo; • Epimorfismo; • Banco de Dados Relacional; • Rede de Petri; • Relações nas linguagens de Programação • Relações de Ordem; • Classificação e Dados; • Diagrama de Hasse, • Conjuntos Ordenados; • Equivalência; • Partição. 6) ED: Funções • Função Parcial; • Autômato Finito; • Função Total; • Construções Matemáticas como Funções; • Função Hashing; • Funções nas linguagens de Programação. 7) AP2: Tipos abstratos de dados • Conceito e aplicações; • independência entre especificação e implementação; - 7 de 12 - UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA Autorizada pelo Decreto Federal nº 77.496 de 27/04/76 Reconhecida pela Portaria Ministerial nº 874/86 de 19/12/86 Recredenciada pelo Decreto Estadual Nº 9.271 de 14/12/2004 CONTEÚDO PROGRAMÁTICO (Continuação): • Suporte nas linguagens de programação. 8) Estruturas de dados básicas • Operações básicas: inclusão, busca e remoção; • Noções de análise de algoritmos: • análise do uso de recursos (memória e processamento); • abstração matemática; • Tabelas; • Listas simples e encadeadas; • Pilhas e filas: estrutura, operações. 9) Filas com prioridades • Conceito • Filas de prioridade máxima e filas de prioridade mínima • Implementações triviais: usando listas • Implementações com heaps 10) Métodos de ordenação • O problema; • Soluções triviais: Bubblesort e por inserção; • Mergesort; • Heapsort; • Quicksort; • Comparativo de custos. 11) AP2: Tópicos avançados em programação orientada a objetos • Interfaces; • Herança; • Composição; • Polimorfismo, acoplamento e ligação dinâmica. 12) AP2: Construção e uso de bibliotecas • Idéia geral: compilação independente e em separado • Suporte em Java (classes e pacotes) 13) ED: Indução e recursão. • Princípio da Indução Matemática; • Prova Indutiva; • Segundo Princípio da Indução Matemática; • Definição Indutiva; • Expressões Regulares; • Computações de um Autômato Finito; • Funções recursivas; • Substituição; • Recursão primitiva. • Função recursiva parcial. - 8 de 12 - UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA Autorizada pelo Decreto Federal nº 77.496 de 27/04/76 Reconhecida pela Portaria Ministerial nº 874/86 de 19/12/86 Recredenciada pelo Decreto Estadual Nº 9.271 de 14/12/2004 CONTEÚDO PROGRAMÁTICO (Continuação): 14) Árvores • Conceito e terminologia • Implementação • Operações básicas: inclusão, busca e remoção. 15) Árvores binárias • Conceito • Operações básicas: inclusão, busca e remoção • Balanceamento • Aplicações • Árvores de pesquisa. 16) Árvores Rubro-negras • Definição • Controle da altura • Rotações • Operações básicas • Aplicações 17) Árvores B • Definição • Questões de armazenamento • Implementação • Operações Básicas • Aplicações 18) AP2: Princípios de testes • Erros: tempo de compilação, tempo de execução e semânticos • Testes sistemáticos • Depuração de programas: técnicas e ferramentas 19) Métodos de busca • Comparações entre estruturas de dados para busca • Aplicações 20) Hashing • Tabelas hash • Resolução de colisões • Funções hash • Aplicações 21) ED: Grafos e árvores • Grafos; • Caminhos em Grafos; • Ciclos em Grafos; • Conexidade; • Conectividade; - 9 de 12 - UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA Autorizada pelo Decreto Federal nº 77.496 de 27/04/76 Reconhecida pela Portaria Ministerial nº 874/86 de 19/12/86 Recredenciada pelo Decreto Estadual Nº 9.271 de 14/12/2004 CONTEÚDO PROGRAMÁTICO (Continuação): • Definição de Árvore; • Árvore Geradora; • Árvore Binária; • Representações computacionais de um grafo. 22) Gerenciamento de memória • Memória primária • Memória secundária 23) Organização de arquivos • Organizações típicas de arquivos • compressão de dados 24) ED: Estruturas algébricas • Operações Binárias; • Propriedades das Operações Binárias; • Monóides; • Semigrupos; • Grupos; • Homomorfismo de Monóides; • Homomorfismo de Semigrupos; • Homomorfismo de Grupos. 25) ED: Reticulados e álgebras booleanas. • Reticulados; • Reticulado com Relação de Ordem; • Reticulado como Álgebra; • Reticulado Distributivo; • Reticulado Limitado; • Reticulado Complemento; • Subreticulado; • Álgebra Booleana; • Função Monotônica; • Homomorfismo de Reticulados; • Homomorfismo de Álgebras Booleanas. 26) ED: Princípios de contagem, combinatória. • Princípio da Multiplicação; • Permutações; • Combinações; • Permutações com Repetição; • Combinações com Repetições; • Principio da Inclusão e Exclusão; • Principio da Casa dos Pombos; • Gerando permutações; - 10 de 12 - UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA Autorizada pelo Decreto Federal nº 77.496 de 27/04/76 Reconhecida pela Portaria Ministerial nº 874/86 de 19/12/86 Recredenciada pelo Decreto Estadual Nº 9.271 de 14/12/2004 CONTEÚDO PROGRAMÁTICO (Continuação): • Gerando Subconjuntos; • O problema do Troco. 27) Conjuntos • Conceito • Representação: • Operações: inclusão, remoção, pertinência, união, interseção, diferença, cardinalidade • Iteradores • Implementações: árvores binárias e tabelas hash • Aplicações 28) Grafos • Definição • Tipos: orientados e não orientados • Representações: listas de adjacências e matrizes de adjacências • Algoritmos de pesquisa: primeiro na extensão e primeiro na profundidade • Aplicação: caminho mais curto REFERÊNCIA BIBLIOGRÁFICA: HORSTMANN, C. e CORNELL, G. Core Java 2, V.1: Fundamentos, Makron, 2000. DEITEL, H.M. e DEITEL, P.J. JAVA: Como Programar, Bookman Companhia Editora, 2003. ECKEL, B. Thinking in Java, Prentice Hall, 2002. MEYER, B. Object-Oriented Sofware Construction, segunda edição, Prentice Hall PTR, 2000. CORMEN, T.H., LEISERSON, R.L., RIVEST, R.L. e STEIN, C. Introduction to Algorithms, segunda edição, MIT Press, 2001. AHO, A., HOPCROFT, J. e ULLMAN, J. Data Structures and Algorithms, AddisonWesley Pub Co, 1983. KNUTH, D. The Art of Computer Programming, vol. I e III, Addison-Wesley Pub Co, 1998. LAFORE, R. Data Structures and Algorithms in Java, segunda edição, SAMS, 2002. GOODRICH, M.T. e TAMASSIA, R. Data Structures and Algorithms in Java, segunda edição, Wiley, 2000. - 11 de 12 - UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA Autorizada pelo Decreto Federal nº 77.496 de 27/04/76 Reconhecida pela Portaria Ministerial nº 874/86 de 19/12/86 Recredenciada pelo Decreto Estadual Nº 9.271 de 14/12/2004 REFERÊNCIA BIBLIOGRÁFICA (Continuação): SEDGEWICK, R. e SCHIDLOWSKY, M. Algorithms in Java, terceira edição, AddisonWesley Pub Co, 2002. WEISS, M.A. Data Structures and Algorithm Analysis in Java, Addison Wesley, 1998. MENEZES, P. B. Matemática Discreta para Computação e Informática, Série Livros Didáticos, Editora Sagra Luzzatto, 2004. GERSTING, J.L. Fundamentos Matemáticos para Ciência da Computação. Quarta Edição. Rio de Janeiro: LTC, 2001. ROSEN, K.H. Discrete Mathematics and Its Applications , quinta edição, McGraw-Hill Science, 2003. Sites - 12 de 12 -