Scc-201 2017(moacir)

De CoteiaWiki

Site para submissão dos trabalhos http://run.codes

Atendimento, PAE e monitoria:

Grupo Google para dúvidas e atendimento: icc2_bcc2017@googlegroups.com

    • emails na lista são recebidos por todos os monitores, professores e PAEs, agilizando a resposta
    • obs: para entrar no grupo você pode um "subscribe" email para: icc2_bcc2017+subscribe@googlegroups.com

(você deve então responder a confirmação de inscrição no grupo)

Professor: sala 3-245 - Quartas-feiras das 13h30-15h30

PAE: -Yule Vaz - Térreo do Bloco 3 (perto do elevador e da lousa) - quartas das 14hs às 16hs -Lucas Pagliosa - Térreo do Bloco 3 (perto do elevador e da lousa) - segundas das 14hs às 16hs -Ricardo Fuzeto - Térreo do Bloco 3 (perto do elevador e da lousa) - sextas das 14hs às 16hs OBS: Atendimento PAE é feito por demanda (enviar email na lista para marcar).

Monitores - Lucas Fernandes Turci: lucas.turci@usp.br OBS: Atendimento é feito por demanda (enviar email na lista para marcar).


Conteúdo e materiais de aula

1. Apresentação e Introdução - 31/7

   revisão sobre linguagem C e algoritmos
   modelo do computador (entrada, saida, processamento e memória)
   endereçamento da memoria em sistemas 32 e 64 bits
   noções de lvalue / rvalue
   arranjos: formas de acessar os valores
  

2. Revisão: ponteiros, arranjos e alocacao dinâmica - 03/08

   alocacao dinamica: malloc, calloc,free
   memory leak
   valgrind e depuração de gerenciamento de memória
   recursão

3. Análise de algoritmos e eficiência - 07/08

   Recursão
   Eficiência de algoritmos
   Contagem de operações e função de eficiência com base no tamanho da entrada a ser processada
   Busca sequencial a partir do conteúdo de um arquivo gerado aleatoriamente

4. Análise de algoritmos e eficiência - 10/08

   Eficiência de algoritmos: busca sequencial e busca binária
   Recursão: primeiros exemplos com busca binária recursiva e comparação de tempo de execução

    • 11 A 18 - SEMCOMPi!!!

5. Ordenação e análise de algoritmos - 21/08

   Métodos de ordenação: bubble-sort
   Entrevista de emprego (Obama - Google)
   OBS: compilar também usando diretivas de otimização gcc:
       $ gcc -o prog source.c -O3 -march=native
       -march=native encontra flags "automaticamente", para visualizar use: gcc -march=native -E -v - </dev/null 2>&1 | grep cc1
   Comparação entre dois métodos de busca e computadores
   Gráficos de funções de eficiência (complexidade computacional)
   Métodos de ordenação: insertion-sort
   Análise da complexidade dos algoritmos bubble-sort e insertion-sort
   Vídeos com demonstração: bubble-sort e insertion-sort
   Site com visualização: www.sorting-algorithms.com

6. Funções de comparação e ordenação pelo método da divisão e conquista : mergesort - 24/08

   Implementação do método de ordenação: merge-sort
   Demonstração do algoritmo

7. Ordenação pelo método da divisão e conquista : mergesort recursivo- 28/08

   Etapa de intercalação (merge): análise da complexidade


8. Funções de eficiência e equações de recorrência - 31/08

   Recursão e funcionamento na memória (pilha de chamadas recursivas)
   Funções de comparação entre insertion, selection, bubble e merge substituindo os operadores (usando ponteiro para função)
   Encontrando constantes experimentalmente -  ajuste de polinômio usando gnuplot
   Encontrando as constantes de funções de eficiência
    • Semana da pátria: 4 a 8/9

9. Eficiência de algoritmos - 11/09

   Casos recursivos: logaritmico, linear, quadrático, log-linear
   Eficiência - ver 1.o capítulo Garey & Johnson - Computers and Intractability
   Exemplos de equações de recorrência e suas formas fechadas
   Passos para obtenção da complexidade computacional:
       Algoritmo
       Contagem manual ou relações de recorrência
       Notação assintótica

10. Eficiência de algoritmos e notações assintóticas (1) - 14/09

11. Eficiência de algoritmos e notações assintóticas + recorrência (2) - 18/09

12. Heap-sort - 21/09

   Max-heap e Min-heap como filas de prioridade
   Função de eficiência da função maxHeapify()
   Algoritmo Heapsort
  
  • 2/10 não haverá aula

13. Quick-sort - 28/09

   Algoritmo quick-sort
   Comparação entre os algoritmos de ordenação: ver site www.sorting-algorithms.com

14. Prova 1 - 05/10

   o foco será na interpretação de algoritmos/codigo com contagem de operações e escrita de algoritmos.
   CONSULTA DE 1 Folha A4
   calculadora pode ser usada (computador/celular/tablet/smartwatch NÃO)
   individual

15.Quicksort: parte 2 - 09/10

   Diferentes implementações do quick-sort
   Estratégias de escolha do pivô
   Cálculo da eficiência do quick-sort probabilístico
  

16. Heap-sort: parte 2 - 16/10

   Eficiência do heapsort
   Níveis da árvore e sua relação com a função de eificência do MaxHeap e Heapsort
   Limite inferior para algoritmos de ordenação baseados em comparação
  • 16 e 19/10 não haverá aula

17. Counting-sort - 23/10

   Counting-sort com chaves inteiras: aula gravada

18. Bucket Sort e Radixsort - 26/10

   Counting-sort com registros

19. Radixsort - 30/10

   Exemplos usando inteiros e base 10
   Exemplos e implementação usando inteiros de 32 bits e bases com potencia de 2 variaveis 256
   Testes experimentais comparando os algoritmos implementados

20. Busca: indexada, interpolada e considerações sobre árvores - 06/11

   Busca interpolada x busca binária x busca indexada
   Considerações sobre árvores binárias de busca
  • 9/11 não haverá aula

21. Hashing: parte 1 - 13/11

   Tabelas hash com endereçamento direto/aberto
   Método da divisão
   Colisões e paradoxo do aniversário

22. Hashing: parte 2 - 16/11

   Método da multiplicação
   Hashing de chaves compostas: strings, double, etc.

23. Hashing: parte 3 - 20/11

   Tabelas hash com encadeamento
   Hashing universal
   Outras questões sobre hashing
   Artigo: Denial of Service via Algorithmic Complexity Attacks: external link: https://www.usenix.org/legacy/event/sec03/tech/full_papers/crosby/crosby.pdf

24. Aplicações - 27/11

25. Revisão e exercícios - 30/11

26. Prova 2 - 04/12

   SEM CONSULTA
   individual
   calculadora pode ser usada (computador/celular/tablet/smartwatch NÃO)

27. Revisão e fechamento da disciplina - 07/12

  Revisão da prova e fechamento da disciplina