Igor M. Coelho
15/03/2021
Bem-vind@s ao curso de Estrutura de Dados e Algoritmos
Curso:
Links úteis:
e-mail (com prefixo no assunto ‘[PGC-EDA-2021.1]’):
imcoelho at ic.uff.br (emergência)
Me chamo Igor, e é um prazer apresentar esse curso para vocês! Sou professor e pesquisador da UFF, desenvolvedor de algoritmos e sistemas (a maioria de código-aberto), bem como suas respectivas estruturas de dados (vocês saberão em breve o que é isso!). Podem me contactar pelos emails ao lado (substituam o ‘at’ por ‘@’), mas peço que priorizem o uso da ferramenta de Classroom do curso, que consigo responder mais rápido (com alcance aos demais alunos). Esse curso está disponível no meu site pessoal no github: https://igormcoelho.github.io/curso-estruturas-de-dados-i
Gostaria que se apresentassem também (nas aulas síncronas) para nos conhecermos melhor!
Ninguém aprende 100% do que o professor ensina, e nem o professor consegue ensinar 100% de um conteúdo, então cabe aos alunos: ler, estudar e questionar (muito!). Juntos podemos trabalhar para transmitir esse conhecimento valioso para cada um de vocês.
Sempre que tiverem uma dúvida ou curiosidade, perguntem! Toda pergunta é valiosa, e o conhecimento é construído em pequenas porções.
Para esse curso funcionar: tenham dedicação!
É fundamental:
Atividades com aulas remotas em 2020.2
Período: 08/03/2021 (segunda-feira) - 25/06/2021 (sexta-feira)
Lançamento de notas: 23/06/2021 (último encontro)
Teremos aulas síncronas em horários regulares e outras diversas atividades assíncronas complementares (vídeos, textos, trabalhos, …) para suprir toda a carga horária.
Serão oferecidas aprox. 30%-50% de aulas síncronas, além de atividades de apresentação/discussão síncronas.
Vide: INSTRUÇÃO DE SERVIÇO PROGRAD Nº 15/2020, DE 25 DE AGOSTO DE 2020
Horários do curso: segunda e quarta 16h-18h.
Horários síncronos*: segundas 16h-18h (quartas sempre serão assíncronos)
(*) Algumas exceções estão previstas e algumas aulas poderão ser alteradas (caso seja necessário), mas esta é a regra geral.
Introdução: recursividade, complexidade de algoritmos. Listas Lineares: introdução, listas lineares em alocação sequencial, pilhas e filas, aplicação, listas lineares em alocação encadeada, alocação de tamanho variável, implementações. Árvores: introdução, árvores binárias (representação, busca, inserção, percurso), árvores balanceadas (árvores AVL, árvores graduadas e rubro-negras, árvores B), implementações. Listas de Propriedades: introdução; implementação; alteração de propriedades, inserção, remoção e construção de uma lista de prioridades, aplicação.
Haverá atividades avaliativas assícronas (A), como listas de exercícios e resumos de textos/vídeos (R). Haverá apenas uma VS com conteúdo escrito (VS). Além disso, haverá atividades com prova (V) e apresentação + texto (P) (com formação opcional de grupos por tema de interesse).
A nota N do curso será:
A = 40%R + 60%V
N1 = (A + P)/2
De acordo com as normas regulares da UFF, a nota mínima N1 para aprovação é 6.
IMPORTANTE: no modelo de avaliação continuada com avaliações assíncronas, não haverá VS.
Tipo = Sinc./Asinc.
Data | Atividade | Tipo |
---|---|---|
01/02/2021 | Revisão C/C++ & Tipos | Asinc. |
03/02/2021 | Revisão C/C++ & Tipos | Asinc. |
08/02/2021 | Introdução | Sinc. |
10/02/2021 | Revisão C/C++ & Tipos | Asinc. |
15/02/2021 | - | - |
17/02/2021 | - | - |
22/02/2021 | Pilhas & Filas | Sinc. |
24/02/2021 | Leitura & Debates | Asinc. |
Data | Atividade | Tipo |
---|---|---|
29/03/2021 | Debates * | Asinc. |
31/03/2021 | Debates * | Asinc. |
05/04/2021 | Apresentação (P) | *Asinc. |
07/04/2021 | Debates (P) | Asinc. |
12/04/2020 | Apresentação (P) | Sinc. |
14/04/2021 | Debates (P) | Asinc. |
19/04/2021 | Apresentação (P) | Sinc. |
21/04/2021 | - | - |
26/04/2021 | Apresentação (P) | Sinc. |
28/04/2021 | *Segunda Chamada | *Asinc. |
Data | Atividade | Tipo |
---|---|---|
03/05/2021 | Lançamento Notas | *Asinc. |
05/05/2021 | - | Asinc. |
10/05/2021 | Fim Semestre | *Asinc. |
O trabalho consiste em implementar e apresentar um tópico (subtópico da parte de grafos, hashes e outros tópicos classificados como “extra”). Deverá ser feito em formato artigo com no mínimo 3 membros (casos excepcionais serão analisados apenas caso não seja possível formar grupos).
A formação de grupos será pela plataforma, durante debates cada aluno irá indicar uma empresa de interesse (em um primeiro momento). Assim, serão agregados naturalmente grupos (por ordem cronológica de criação de grupos completos) com no máximo duas repetições por tema.
O formato de entrega será em artigo no padrão SBC (word ou LaTeX PDF) - máx 5 páginas - e apresentação síncrona.
Grupos deverão ser definidos no máximo até a data da prova (V). Haverá quatro dias possíveis para apresentação, mais um debate assíncrono das apresentações do dia.
É necessário agendar previamente a apresentação! Façam o quanto antes!
O conteúdo do curso será focado na análise de algoritmos, então as técnicas apresentadas independem da linguagem de programação adotada (valendo inclusive para pseudocódigo).
Porém, para fornecer um conteúdo dinâmico que pode ser testado e experimentado pelos alunos em uma das linguagens mais utilizadas atualmente no mundo, adotaremos as linguagens C/C++ (ambas serão aceitas).
A linguagem C++ é uma extensão da linguagem C, adicionando dois principais recursos interessantes: orientação a objetos e pro- gramação genérica. Não entraremos com profundidade em nenhum destes dois assuntos, mas não se preocupe! Eles serão aprofunda- dos em disciplinas futuras. Somente recursos básicos das linguagens C/C++ serão utilizados neste curso (e iremos revisá-los em breve!).
Bibliografia básica:
J.L.Szwarcfiter e L. Markezon, Estrutura de Dados e seus Algoritmos, Editora LTC, 1994
T.H. Cormen, C.E. Leiserson e R. Rivert, Introduction to Algorithms, McGraw-Hill, 1991
Em especial, agradeço aos colegas que elaboraram bons materiais, como o prof. Fabiano Oliveira (IME-UERJ), e o prof. Jayme Szwarcfiter cujos conceitos formam o cerne desses slides.
Estendo os agradecimentos aos demais colegas que colaboraram com a elaboração do material do curso de Pesquisa Operacional, que abriu caminho para verificação prática dessa tecnologia de slides.
Esse material de curso só é possível graças aos inúmeros projetos de código-aberto que são necessários a ele, incluindo:
Agradecimento especial a empresas que suportam projetos livres envolvidos nesse curso:
Esses slides foram escritos utilizando pandoc, segundo o tutorial ilectures:
Exceto expressamente mencionado (e com as devidas ressalvas ao material cedido pelo prof. Fornazin), a licença será Creative Commons.
Licença: CC-BY 4.0 2020
Igor Machado Coelho