Skip to main content

Estruturas de dados

Encontro em 25/04/2024

TUUUUUDO BEM COM VOCÊS??
Prof. Oak

Essa instrução será ministrada pelo nosso golden retriever favorito, o prof. Carvalho! Tratem-no com carinho.

1. Resultados desejados

1.1. Objetivos estabelecidos

Estruturas de dados estão por toda a parte no mundo da computação. É impossível chegar longe e evoluir nesse ramo sem considerar com mais cuidado as diferentes estruturas de dados existentes e as implicações de sua utilização. Sendo assim, esse é um assunto que deve ser abordado de forma transversal no curso.

O objetivo desse encontro é fazer com que os alunos aprofundem o seu conhecimento sobre estruturas de dados e considerem aspectos de performance e abstração relacionados com a sua escolha.

Um objetivo secundário é faze com que o aluno reflita sobre as estruturas de dados que utiliza em linguagens de alto nível sob o prisma de suas implementações em baixo nível.

1.2. Questões centrais do encontro

  1. Quais são as principais estruturas de dados que utilizamos sem perceber ao usar uma linguagem de alto nível como o Python?
  2. Quais são as diversas formas de implementar estruturas array-like? Quando devo utilizar cada uma delas?
  3. Qual a importância das filas e pilhas? Quais são as principais aplicações que utilizam essas estruturas de dados?
  4. Por quê o dicionário de Python é mais performático que a lista? Que tipo de estrutura de dados existe por trás dele?
  5. O que diabos acontece com o array de Javascript?

1.3. O que o aluno deve compreender?

  • O aluno deve compreender que estruturas de dados nada mais são do que abstrações criadas para que seres humanos possam compreender os dados armazenados em computadores e, assim, bolar algoritmos para manipulá-los de forma mais simples.
  • O aluno deve compreender que, mesmo utilizando linguagens de alto nível, há uma implicação importante no uso de memória para cada estrutura de dados que ele escolhe. Ele deve ser capaz de compreender a implementação dessas estruturas de dados com alguma pesquisa e determinar se ela utiliza o stack ou o heap.

1.4. O que o aluno deve ser capaz de fazer?

  • O aluno deve ser capaz de escolher de forma consciente as estruturas de dados para um projeto;
  • O aluno deve ser capaz de interagir com linguagens de alto nível com um novo entendimento, sabendo pesquisar e quantificar as vantagens e desvantagens da escolha implícita que está fazendo ao escolher utilizar, por exemplo, um dicionário de Python;

2. Evidências de aprendizado

2.1. Evidências de desempenho

Preparação para o ENADE

Uma das evidências de desempenho mais comuns sempre vai ser a régua de avaliação do ENADE. Como estruturas de dados fazem parte do currículo obrigatório do curso de Engenharia de Computação, uma boa forma de avaliar a evolução do aluno é utilizando provas anteriores e simulados do ENADE

Escolhas em projetos

Embora não seja uma forma isolada de avaliação, deve ser possível perceber que o aluno é capaz de fazer escolhas mais conscientes relativas aos tipos de estruturas que usa em projetos mais complexos. Sejam eles atividades ponderadas ou artefatos de projetos maiores.

Questionários de multipla escolha

Uma forma rápida e fácil de aferir o conhecimento do aluno a respeito de estruturas de dados é mostrando cenários em que a escolha desse tipo de estrutura seja importante e oferecendo-o multiplas escolhas para a seleção. A resposta correta e uma justificativa adequada servem como medição para o aprendizado do aluno.

3. Plano de aprendizagem

Daily (0 - 15 min)

4. Slides