BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Tóffolo 2011/1
Introdução ao Curso 2
Carga horária semanal 2 aulas teóricas e 2 aulas práticas (ambas em laboratório) Terças às 17:10, lab 22 do DECOM Prof. Túlio Quintas às 17:10, lab 22 do DECOM Prof. Marco A alocação dos professores não é fixa. 3
Objetivos Aprofundar conteúdos de programação básica como estruturas de dados e paradigmas de projeto de algoritmos e técnicas para a codificação rápida de códigos eficientes. Todos os conteúdos serão praticados na resolução de pequenos desafios computacionais avançados. 4
Metodologia Aulas teóricas Exposição de algoritmos, técnicas e recursos de programação. Aulas práticas Aplicação do conteúdo teórico na solução de problemas práticos e teóricos. Trabalhos extra-classe Consolidação da experiência com os temas tratados em aula 5
Metodologia Dois professores Aula teórica e prática sobre um mesmo tema com um mesmo professor. Terças-feiras Túlio Tóffolo. Quintas-Feiras Marco Antonio. 6
Recursos Ambiente computacional de compilação, desenvolvimento e execução de programas; Software de apoio à aprendizagem, executado em um ambiente virtual Moodle. Lista de discussão na internet; BOCA (Online Contest Administrator) Maratona Linux PC Square. Testes online Banco enorme de problemas; 7
UVa Site da Universidad de Valladolid (Espanha) com vários problemas e correção automática; Problemas semelhantes aos encontrados na maratona Correção automática; Em inglês Forneceremos versões traduzidas. 8 8
Os problemas Os problemas são enunciados de forma bem humorada, em contextos fictícios, porém, de aplicação prática; Envolvem, dentre outros: Aritmética e Álgebra; Geometria computacional; Manipulação de strings; Grafos; Problemas Combinatórios. 9 9
Atividades dos alunos Participação em sessões de discussão sobre estratégias de resolução de problemas utilizando os conceitos abordados; Trabalhos de implementação em classe e extraclasse. Ao final da disciplina, o aluno deverá estar apto a identificar as estruturas e os paradigmas adequados para resolução de problemas. Esta disciplina não se restringe a alunos envolvidos com a Maratona de Programação. 10
Bibliografia Skiena, S. S., Revilla, M. A. Programming challenges: the programming contest training manual. Birkhäuser, 2003. 11
Bibliografia Cormen, T. H., Leiserson, C. E., Rivest, R. L., Stein, C. Algoritmos: Teoria e Prática. Segunda edição. Editora Campus, 2002. 12
Bibliografia Manber, U. Introduction to Algorithms: A Creative Approach. Addison-Wesley, 1989. 13
Bibliografia Sedgewick, R. Algorithms in C Parts 1-5. 3rd Edition. Addison Wesley Longman, 1998. 14
Bibliografia Knuth, D. E. The Art of Computer Programming, Volume 1: Fundamental Algorithms. 3rd edition. Addison-Wesley, 1997. 15
Bibliografia Preparata, F. P., Shamos, M.L. Computational geometry: An introduction. Springer- Verlag, 1985. 16
Avaliação 3 provas práticas, realizadas com auxílio do computador (50% da nota); Individuais. Listas de exercícios e laboratórios (50% da nota); Individuais. A frequência também é considerada. 17
Avaliação Não será cobrado a memorização de algoritmos e estruturas Ao invés disso, serão cobrados quando e como utilizá-los. O objetivo reside em aprender a utilizar as ferramentas disponíveis, e não em fabricar as ferramentas. 18
Aulas Teóricas As aulas teóricas serão realizadas em laboratório também Aula expositiva; Contextualização de problemas computacionais e práticos do dia-a-dia; Relação entre descrição textual de problemas e aspectos computacionais Algoritmos e estruturas de dados. 19
Laboratórios Em cada aula prática, o conteúdo teórico será brevemente revisto, e exercícios sobre cada tema serão resolvidos e enviados pelo Moodle até o final do dia Dificuldade baixa a média; Contam para a avaliação. Só serão considerados exercícios identificados e corretos. 20
Listas de Exercícios A cada aula prática, uma série de exercícios será disponibilizada Dificuldade baixa a alta; Correção eletrônica pelo site da Uva; Entrega pelo Moodle em uma semana; Contam para avaliação. Todos os exercícios são corrigidos Cópias ou tentativas de trapaça invalidam toda a lista de exercícios Acarretam em perda do direito a pontos extras. Não haverá gabarito Dúvidas devem ser sanadas junto ao professor ou colegas antes do prazo de entrega. 21
Provas As provas são realizadas com auxílio do computador Individuais e sem consulta à internet; Eventual consulta a livros e notas de aula Não quer dizer que será fácil. Correção rigorosa em contrapartida. 22
Discussões Haverá grande flexibilidade no ambiente da aula no que diz respeito ao compartilhamento de conhecimento O que não inclui cópias. A idéia é que os alunos interajam fortemente, troquem experiências e se ajudem A disciplina é avaliada individualmente, mas o aprendizado deve ser coletivo Pode ser utilizada a lista de e-mails para isso, ou mesmo o contato pessoal. 23
Discussões Todas as dificuldades e dúvidas devem ser postas em discussão Todos contribuem; Todos aprendem. Por outro lado Facilidades implicam em maiores responsabilidades; Cópias serão fortemente rejeitadas. 24
Linguagem de Programação O material da aula utilizará linguagem C Porém, cada aluno pode escolher a linguagem de preferência; C, C++, Java, Pascal... Shell script não será permitido. O ambiente computacional será Linux Integração com ambientes de programação; Facilidade de compilação por linha de comando. 25
Programação Aula 01: Uva, Tipos de erros, Compilação Representação de tipos Formas padrões de entrada e saída Aula 02: Estruturas de dados: Pilhas, Filas, Listas, Dicionários, Filas de prioridade Aula 03: Definições e estruturas de dados (grafos) Busca em Largura e Busca em Profundidade Aula 04: Ordenação Aula 05: Manipulação de Cadeias de Caracteres Busca de Padrões Bibliotecas C/C++ e Java Aula 06: Inteiros de alta precisão Bases numéricas e conversão Álgebra, manipulação de polinômios, radiciação, logaritmo Bibliotecas de Números reais 26
Programação Aula 07: Recursividade Tentativa e erro Aula 08: Divisão e conquista Aula 09: Programação Dinâmica Aula 10: Algoritmos gulosos Aula 11: Backtracking Aula 12: Técnicas básicas de contagem Aula 13: Problemas e métodos clássicos de análise combinatória Aula 14: Segmentos de linha e interseção Computação de polígonos e ângulos Aula 15: Ordenação Topológica Árvores geradoras mínimas Aula 16: Algoritmos de Menores caminhos e fluxo em redes 27
Cronograma Inicial 10/Mar - Aula 01 15-22/Mar - Aula 02 17-24/Mar - Aula 03 29/Mar-05/Abr - Aula 04 31/Mar-07/Abr - Aula 05 12-14/Abr - Aula 06 19/Abr - Prova 28/Abr-05/Mai - Aula 07 03-10/Mai - Aula 08 12-19/Mai - Aula 09 17-24/Mai - Aula 10 26/Mai-02/Jun - Aula 11 31/Mai - Aula 12 07/Jun Prova 09-16/Jun - Aula 13 14-21/Jun - Aula 14 28/Jun-05/Jul - Aula 15 30/Jun-07/Jul - Aula 16 12/Jul - Prova 19/Jul - Exame Especial 28
Cronograma Inicial Teremos 3 feriados, recessos ou inversões em dias de aula (21/04, 26/04 e 23/06); O calendário acadêmico prevê dias específicos para inversão de aulas Por exemplo, dias de sábado com calendário de terça; Não teremos uma aula em uma terça-feira (26/04). 29
Recomendações 30
O que se espera do aluno Pontualidade Chamada uma vez por aula; Perdeu a chamada, não tem choro. Dedicação exclusiva às atividades da disciplina durante a aula Proatividade; Aplicação nas atividades extra-classe As listas de exercícios representam pontos valiosos. 31
Recomendações 32
Recomendações 33
Recomendações Inglês Pelo menos o mínimo é imprescindível para programação. O aluno deve buscar sanar possíveis deficiências. 34
Recomendações Proficiência em informática É esperado que o aluno saiba usar o computador Editor de texto; Navegar na internet; E-mail; Lidar com arquivos; Sistema operacional. 35
Recomendações Proficiência em programação É esperado que o aluno saiba programar em alguma das linguagens suportadas C; C++; Java; Pascal. 36
Atendimento Professores Marco Antonio marco.opt@gmail.com (não enviar programas) 3559-1663 Sala 19 DECOM (Em frente ao laboratório) Túlio??? (não enviar programas) 3559-1663 Sala 19 DECOM (Em frente ao laboratório) 37
Lista de Discussão maratonaufop@googlegroups.com 38
Competição Competição Internacional Nível: a partir do terceiro grau até mestrado (1 ano) 39
Acompanhamento Além do material das aulas, outras informações estão disponíveis no curso BCC402 Algoritmos e Programação Avançada do Moodle www.decom.ufop.br/moodle 40
Perguntas? 41
FIM 42