Saltar para:
Logótipo
Você está em: Início > CC1007
Mapa das Instalações
FC6 - Departamento de Ciência de Computadores FC5 - Edifício Central FC4 - Departamento de Biologia FC3 - Departamento de Física e Astronomia e Departamento GAOT FC2 - Departamento de Química e Bioquímica FC1 - Departamento de Matemática

Estruturas de Dados

Código: CC1007     Sigla: CC1007     Nível: 100

Áreas Científicas
Classificação Área Científica
OFICIAL Ciência de Computadores

Ocorrência: 2018/2019 - 2S

Ativa? Sim
Página Web: http://www.dcc.fc.up.pt/~pribeiro/aulas/edados1819/
Unidade Responsável: Departamento de Ciência de Computadores
Curso/CE Responsável: Licenciatura em Ciência de Computadores

Ciclos de Estudo/Cursos

Sigla Nº de Estudantes Plano de Estudos Anos Curriculares Créditos UCN Créditos ECTS Horas de Contacto Horas Totais
L:B 0 Plano de Estudos Oficial 3 - 6 56 162
L:CC 92 Plano de estudos a partir de 2014 1 - 6 56 162
L:F 1 Plano de Estudos Oficial 2 - 6 56 162
3
L:G 2 Plano estudos a partir do ano letivo 2017/18 2 - 6 56 162
3
L:M 2 Plano de Estudos Oficial 2 - 6 56 162
3
L:Q 7 Plano estudos a partir do ano letivo 2016/17 3 - 6 56 162
MI:ERS 155 Plano Oficial desde ano letivo 2014 1 - 6 56 162

Docência - Responsabilidades

Docente Responsabilidade
Pedro Manuel Pinto Ribeiro Regente

Docência - Horas

Teórica: 2,00
Práticas Laboratoriais: 2,00
Tipo Docente Turmas Horas
Teórica Totais 2 4,00
Pedro Manuel Pinto Ribeiro 4,00
Práticas Laboratoriais Totais 10 20,00
Pedro Manuel Pinto Ribeiro 4,00
João Nuno Vinagre Marques da Silva 4,00
Eva Catarina Gomes Maia 4,00
João Luis Alves Barbosa 4,00
Patrícia Raquel Vieira Sousa 4,00

Língua de trabalho

Português

Objetivos

Pretende-se que o estudante reforce competências de programação, fique a conhecer algumas das principais estruturas de dados e algoritmos associados, e ganhe competências básicas na concepção e análise de algoritmos.

Resultados de aprendizagem e competências

Os principais objectivos de aprendizagem são:

- Proeficiência na linguagem Java e no paradigma de programação orientada a objectos;
- Conhecimento das principais estruturas de dados básicas: arrays, matrizes, listas ligadas e árvores binárias;
- Conhecimento dos principais tipos abstractos de dados e suas implementações: filas, pilhas, conjuntos, dicionários e filas de prioridade;
- Competência básica na análise de complexidade de algoritmos e e compreensão das principais classes de complexidade;
- Enriquecimento do conhecimento sobre algumas técnicas algorítmicas como recursividade, pesquisa com retrocesso e dividir para conquistar;
- Experiência prática de aplicação a problemas concretos.

Modo de trabalho

Presencial

Programa

- Conceitos Fundamentais de Java:
  . Classes, objectos, atributos e métodos
  . Tipos primitivos, Strings, wrappers, arrays e tipos enumerados
  . Expressões, operadores e instruções de controle de fluxo
  . Input/Output e a classe Scanner
  . Pacotes e biblioteca padrão do Java
  . Princípios de desenvolvimento de software, estilo e documentação
- Programação Orientada a Objectos:
  . Objectivos, princípio, padrões e mecanismo de herança
  . Interfaces e Tipos Abstractos de Dados (TADs)
  . Uso de genéricos e de iteradores
- Conceitos de Análise Assintótica:
  . Noções de análise assintótica
  . Classes de complexidades típicas e sua comparação
  . Exemplos de análise de algoritmos
- Técnicas de Desenho de Algoritmos:
  . Programaçao estruturada
  . Recursividade
  . Pesquisa exaustiva e backtracking
  . Dividir para conquistar
- Estruturas de Dados Fundamentais:
  . Arrays e matrizes
  . Listas ligadas simples, circulares e duplamente ligadas
  . Árvores binárias, árvores de pesquisa e heaps
- Tipos Abstratos de Dados e suas possíveis Implementações
  . Sequências, pilhas, filas e deques:
  . Contentores associativos: conjuntos e dicionários
  . Filas de prioridade

Bibliografia Obrigatória

Goodrich Michael T.; Data structures and algorithms in Java. ISBN: 0-471-73884-0

Bibliografia Complementar

Sedgewick Robert; Introduction to programming in Java. ISBN: 978-0-321-49805-2
Cormen Thomas H. 070; Introduction to algorithms. ISBN: 978-0-262-03384-8

Métodos de ensino e atividades de aprendizagem

Aulas teóricas expositivas incluindo sessões de live coding. Aulas práticas com exercícios de programação.

Tipo de avaliação

Avaliação distribuída com exame final

Componentes de Avaliação

Designação Peso (%)
Exame 70,00
Trabalho laboratorial 30,00
Total: 100,00

Componentes de Ocupação

Designação Tempo (Horas)
Frequência das aulas
Total: 0,00

Obtenção de frequência

Para obter frequência é necessário não exceder limite de faltas nas aulas práticas e não exceder limite de faltas nos quizzes online semanais.


Fórmula de cálculo da classificação final

- P: nota prática, valendo 30% da nota final, obtida através de:
  3 testes práticos de programação, em ambiente com computador (2 valores cada)
  Nota mínima: 25% (minimo de 1.5 numa nota de 0 a 6 valores)

 - E: nota de exame, valendo 70% da nota final, obtida através de um teste escrito com nota de 0 a 20.

Classificação da época normal: C = E*0.7 + P ≥ 9.5

 - R: na época de recurso será feito feito um único exame, com nota de 0 a 20, não sendo possível repetir os testes práticos de programação.

Classificação da época de recurso: C = R*0.7 + P ≥ 9.5

Provas e trabalhos especiais

3 testes práticos de programação durante o semestre.
Recomendar Página Voltar ao Topo
Copyright 1996-2022 © Faculdade de Ciências da Universidade do Porto  I Termos e Condições  I Acessibilidade  I Índice A-Z  I Livro de Visitas
Página gerada em: 2022-10-06 às 10:57:17 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias