2025 Q1
CCM-001 - Análise de Algoritmos e Estruturas de Dados (Pós)
Professora: Carla Negri Lintzmayer

🚨 Avisos importantes (fique atento sempre!)
📌 [2/mai] A prova 2 terá duração de 3h.[13/abr] Disponibilizei as notas da Prova 1, na seção Notas. As vistas de provas devem ser feitas nos horários de atendimento ou entre 16h e 16h30 nas terças-feiras (na sala de aula). Caso não consiga comparecer em nenhum desses horários, me mande um e-mail para marcamos outro horário.
[2/abr] Disponibilizei algumas soluções das listas 4, 5 e 6 de exercícios.
[21/mar] A prova 1 terá duração de 3h, conforme pedido em sala hoje.
[26/fev] Disponibilizei algumas soluções da lista 2 de exercícios.
[14/fev] Todas as notas de aula das aulas anteriores à prova 1 já estão disponíveis!
[03/fev] Site no ar. Estude-o como se o seu conteúdo fosse ser cobrado em avaliação!
📝 Dias, horários e locais das aulas
Terças-feiras, das 14h às 16h, na sala S-308-2.
Sextas-feiras, das 14h às 16h, na sala S-308-2.
🙋 Dias, horários e locais dos atendimentos
Sextas-feiras, das 16h às 18h, na sala de aula ou na sala da docente. Basta aparecer!
Atenção! Eu não faço atendimento por e-mail!
🧐 Ementa da disciplina
CCM-001 - Análise de Algoritmos e Estruturas de Dados
Objetivos:
- Apresentar noções e conceitos de complexidade de computação;
- Apresentar métodos e conceitos que permitam ao aluno, de maneira confiável, avaliar a qualidade de um algoritmo. A essência destes métodos e conceitos estará focalizada no cálculo de complexidade e prova de corretude de algoritmos;
- Caracterizar técnicas gerais de desenvolvimento de algoritmos que permitam ao aluno melhor projetá-los conforme sua natureza. As técnicas gerais escolhidas a serem estudadas são Divisão e Conquista, Método Guloso e Programação Dinâmica;
- Apresentar noções básicas de Classes de Complexidade, em particular as classes P, NP e NP-Completo.
🖖 Recomendação
Para facilitar o acompanhamento do curso, é recomendado que você possua:
- conhecimentos de programação (em qualquer linguagem imperativa), com boas noções de algoritmos recursivos,
- familiaridade com estruturas de dados básicas (vetores, listas, pilhas, filas e árvores),
- capacidade para reconhecer argumentos lógicos em uma prova matemática (por indução, contradição, construção),
- familiaridade com linguagem matemática (como quantificadores lógicos, somatórios e manipulação de funções).
Dê uma olhada na lista 0 de exercícios e veja se está confortável com aquele conteúdo (ao menos já viu antes).
Preparei também esse material de 🔥revisão🔥 que contém tudo que precisamos na disciplina. Também tenho vídeos com definição e exemplos de indução.
⚠ Revise, no mínimo, indução e recursão antes das aulas começarem!!!⚠
Veja a lista 0 de exercícios!
Outros materiais de apoio:
- Livro de Bases Matemáticas, dos profs. Armando Caputi e Daniel Miranda, da UFABC.
- Videoaulas de Fundamentos da matemática para computação, do prof. Cláudio Possani, da USP.
- Meus vídeos com definição e exemplos de indução.
- Projeto de algoritmos (em C), do prof. Paulo Feofiloff, da USP.
- Estruturas de dados (em C), do prof. Paulo Feofiloff, da USP.
- Videoaulas de Algoritmos e Estruturas de Dados I, do prof. Mário San Felice, da UFSCar.
- Notas de aula da disciplina de Estruturas de Dados do prof. Rafael Schouery, da Unicamp (introdução à programação em C, recursão, listas, pilhas e filas, árvores).
📚 Bibliografia e outros materiais
- [LM] Lintzmayer, C. N.; Mota, G. O.. Notas de aulas - Análise de algoritmos e estruturas de dados (o conteúdo dessa disciplina está completo no livro, mas sempre existem pequenas atualizações - verifique sempre sua versão).
- [CLRS3] Cormen, T. H.; Leiserson, C. E.; Rivest, R. L.; Stein, C.. Introduction to Algorithms. 3rd ed. MIT Press. 2009.
- [R] Vídeo aulas do prof. Tim Roughgarden, de Stanford, em inglês (com legendas): parte 1 e parte 2.
⏰ Datas importantes
Resumo das datas importantes:
- Prova 1: 25/março
- Prova 2: 16/maio
- Prova de recuperação: 7/junho (10h)
📆 Cronograma
Ou seja, as aulas que ainda não estão coloridas podem ter o conteúdo alterado!
Aula 1 - 11/fev
|
Aula 2 - 14/fev
|
Aula 3 - 18/fev
|
Aula 4 - 21/fev
|
Aula 5 - 25/fev
|
Aula 6 - 28/fev
|
04/mar (Feriado Carnaval)
|
Aula 7 - 07/mar
|
Aula 8 - 11/mar - Sem aula presencial!
|
Aula 9 - 14/mar
|
Aula 10 - 18/mar
|
Aula 11 - 21/mar
|
Aula 12 - 25/mar
|
Aula 13 - 28/mar
|
Aula 14 - 01/abr
|
Aula 15 - 04/abr
|
08/abr (Feriado Aniversário Santo André)
|
Aula 16 - 11/abr
|
Aula 17 - 15/abr
|
18/abr (Feriado Paixão de Cristo)
|
Aula 18 - 22/abr
|
Aula 19 - 25/abr
|
Aula 20 - 29/abr
|
02/mai (Recesso Dia do Trabalho)
|
Aula 21 - 06/mai
|
Aula 22 - 09/mai
|
Aula 23 - 13/mai
|
Aula 24 - 16/mai
|
RECUPERAÇÃO - 07/jun (quadrimestre seguinte)
|
👎 Plágio
- Entre outros, o código de ética da UFABC estabelece em seu artigo
25 que é eticamente inaceitável que os discentes:
- fraudem avaliações,
- fabriquem ou falsifiquem dados,
- plagiem ou não creditem devidamente autoria,
- aceitem autoria de material acadêmico sem participação na produção,
- vendam ou cedam autoria de material acadêmico próprio a pessoas que não participaram da produção.
- Muitos ainda têm dúvidas sobre a interpretação das regras definidas pelo Código de Ética da UFABC.
- Por esta razão, diversos professores elaboraram um documento (disponível aqui) com vários exemplos e esclarecendo a interpretação das regras acima.
- Abaixo uma versão resumida, que não substitui de modo algum sua leitura:
- Regra 1: Você não pode enviar para avaliação um trabalho que não seja de sua própria autoria ou que seja derivado/baseado em soluções elaboradas por outros.
- Regra 2: Você não pode compartilhar a sua solução com outros alunos nem pedir aos seus colegas que compartilhem as soluções deles com você.
- Regra 3: Nos trabalhos enviados para avaliação você deve indicar eventuais assistências que você tenha recebido.
- Nós encorajamos fortemente que você procure outras pessoas quando houver a necessidade. Discuta o problema e possíveis ideias para soluções, mas elabore sua própria solução, por conta própria.
- Qualquer violação às regras descritas acima implicará em descarte dos conceitos atribuídos a TODAS as tarefas avaliativas regulares de TODOS os envolvidos, causando assim suas reprovações automáticas com conceito F.
- Possível denúncia à Comissão de Transgressões Disciplinares Discentes da Graduação, a qual decidirá sobre a punição adequada à violação que pode resultar em advertência, suspensão ou desligamento, de acordo com os artigos 78-82 do Regimento Geral da UFABC.
- Sempre consulte o documento completo ou converse com o seu professor em caso de dúvidas!
🏋 Listas de exercícios
- Sobre gabaritos de listas de exercícios:
eu acredito que o objetivo de um exercício teórico não é a resolução do problema em si, mas sim praticar a resolução de problemas;
você precisa chegar nas soluções por conta própria (com algumas dicas da minha parte) ao invés de apenas ler um gabarito (que mostrará uma única solução possível);
por isso, eu não disponibilizo gabaritos completos das minhas listas;
a melhor forma para você saber se resolveu o exercício corretamente é me procurando em horários de atendimento e me mostrando a sua solução. - Sobre descrição de algoritmos nos exercícios: veja essa página.
- Ao todo teremos 6 listas, cujos enunciados estão disponibilizados abaixo.
- O objetivo principal é prover problemas representativos dos conceitos vistos, equivalentes aos que serão cobrados nas avaliações.
- Procure atendimento sempre que tiver dúvidas nos exercícios.
- Faça o maior número de exercícios que puder, sempre.
- Vale moral!!
Qualquer exercício extra que for feito pode ser entregue nos dias das provas para serem considerados como evidência do seu esforço.
Participar das aulas e dos atendimentos também vale moral.
Alunos com moral terão direito a pedir arredondamento de conceitos e notas ou abono de alguma falta ao final do curso.
Em nenhuma hipótese será feito o arredondamento de conceitos ou abono de faltas para alunos sem moral.
- Lista 0
(revisão)
Vocês podem ver as soluções de alguns exercícios neste documento. - Lista 1
(tempo de execução, notação assintótica e corretude de algoritmos iterativos - Aulas 1 a 4)
Vocês podem ver as soluções de alguns exercícios neste documento ou então nestes vídeos:
- Lista 2
(recorrências e corretude de algoritmos recursivos - Aulas 5 a 9)
Vocês podem ver as soluções de alguns exercícios neste documento ou então nestes vídeos:
- Lista 3
(ordenação - Aulas 4, 6 e 10)
Vocês podem ver as soluções de alguns exercícios neste documento. - Lista 4
(introdução a grafos - Aulas 13 a 15)
Vocês podem ver as soluções de alguns exercícios neste documento. - Lista 5
(algoritmos gulosos e programação dinâmica - Aulas 16 a 20)
Vocês podem ver as soluções de alguns exercícios neste documento. - Lista 6
(complexidade - Aulas 21 e 22)
Vocês podem ver as soluções de alguns exercícios neste documento.
- Vale moral!!
🎓 Critérios de avaliação
- A avaliação da disciplina constituirá da nota de duas provas,
denotadas P1 e P2, respectivamente.
- A prova 1 vale 50% da nota e 0 ≤ P1 ≤ 10.
- A prova 2 vale 50% da nota e 0 ≤ P2 ≤ 10.
- Sua média final (MF), portanto, será
MF = 0.5 x P1 + 0.5 x P2 - Seu conceito final será
A, se MF ≥ 8.5
B, se 7.0 ≤ MF < 8.5
C, se 6.0 ≤ MF < 7.0
F, se MF < 6.0
- Não esqueça do vale moral!
💯 Notas
💪 Mecanismo de recuperação
- A recuperação será aplicada apenas aos alunos que tiverem conceito final F e que enviarem e-mail confirmando interesse.
- O conteúdo da prova englobará todos os temas vistos durante o quadrimestre.
- A nota obtida na prova de recuperação (NR) será usada para obter
a nota final com recuperação (NFR), que consiste na fórmula a
seguir:
NFR = max {MF, (MF + NR) / 2}
- O conceito final obtido na recuperação substituirá o conceito
original e será
C, se NFR ≥ 6.0
F, se NFR < 6.0
🤒 Mecanismos de avaliação substitutivos
- Uma prova substitutiva será aplicada ao aluno que possuir justificativa de ausência em uma das provas.
- A listagem dos documentos aceitos como justificativa consta na resolução ConsEPE n° 181.
- A nota obtida na prova substitutiva necessariamente substituirá a prova para a qual o aluno tem justificativa.
- A data para realização da prova substitutiva deverá ser combinada com a professora por e-mail o quanto antes, assim que o aluno estiver em condições de realizá-la.