Algoritmos e Estruturas de Dados
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Programação |
Ocorrência: 2011/2012 - 1S 
Ciclos de Estudo/Cursos
Língua de trabalho
Português
Objetivos
Na sequência das unidades curriculares de Introdução à Programação, é objetivo desta unidade curricular:
- recorrer às noções de programação já estabelecidas e sistematizar o uso de estruturas de informação e de algoritmos para resolver categorias de problemas
- usar, como paradigma de suporte ao desenvolvimento de programas, a orientação por objetos
- dar ênfase à organização dos programas em torno de tipos de dados abstratos.
Serão realizados pequenos projetos usando a linguagem C++.
No final da unidade curricular, os estudantes deverão ter competência para modelar problemas recorrendo ao paradigma da orientação por objetos ; resolver problemas fazendo uso de tipos de dados abstratos e estruturas de dados simples lineares e não lineares.
Programa
Programação orientada por objetos. Herança e Polimorfismo. Aspetos básicos de UML. Linguagem C++. Análise de algoritmos: classes e complexidade. Algoritmos de pesquisa e ordenação. Tipos abstratos de dados. Iteradores. Estruturas de dados lineares e sua implementação: pilhas, filas e listas. Árvores binárias e algoritmos associados. Tabelas de dispersão e algoritmos de manipulação. Filas de prioridade.
Árvores equilibradas. Árvores AVL e "Splay".
Bibliografia Obrigatória
Weiss, Mark Allen;
Data structures and algorithm analysis in C++. ISBN: 0-201-36122-1
Sedgewick, Robert;
Algorithms in C++. ISBN: 0-201-35088-2
Bibliografia Complementar
Deitel, H. M.;
C++ how to program. ISBN: 0-13-185757-6
Stroustrup, Bjarne;
The C++ programming language. ISBN: 0-201-88954-4
Koenig, Andrew;
Accelerated C++. ISBN: 0-201-70353-X
Cormen, Thomas H.;
Introduction to algorithms
Métodos de ensino e atividades de aprendizagem
As aulas teóricas são usadas para exposição formal da matéria, acompanhada da apresentação de exemplos e sua discussão. Nas aulas práticas são resolvidos exercícios de programação em C++. Avaliações práticas são aplicadas ao longo do curso, em datas previamente anunciadas, onde os estudantes são continuamente avaliados a nível teórico e prático, com a realização de exercícios individuais em computador (Componente Individual). Os alunos efetuam trabalhos de grupo de pequena dimensão que são acompanhados fora das aulas e avaliados em dois momentos ao longo do curso (Componente de Grupo).
Software
Cute C++ Unit Testing Framework
Eclipse C++
Palavras Chave
Ciências Físicas > Ciência de computadores > Programação
Ciências Físicas > Matemática > Algoritmos
Tipo de avaliação
Avaliação distribuída sem exame final
Componentes de Avaliação
Descrição |
Tipo |
Tempo (Horas) |
Peso (%) |
Data Conclusão |
Participação presencial (estimativa) |
Participação presencial |
70,00 |
|
|
Implementação do trabalho prático |
Trabalho escrito |
60,00 |
|
|
Pontos de Avaliação (4x2h) |
Exame |
8,00 |
|
|
|
Total: |
- |
0,00 |
|
Componentes de Ocupação
Descrição |
Tipo |
Tempo (Horas) |
Data Conclusão |
Estudo conteúdo teórico / resolução exercícios |
Estudo autónomo |
50 |
|
|
Total: |
50,00 |
|
Obtenção de frequência
O aluno não pode exceder o limite de faltas previsto.
Fórmula de cálculo da classificação final
A avaliação da unidade curricular contém duas componentes:
- Componente Individual (CI) (60%)
- Componente de Grupo (CG) (40%)
A Componente Individual é realizada individualmente, em quatro momentos distintos ao longo do curso:
- Incluirá duas componentes de igual peso: uma componente prática de programação usando testes unitários (CIP) e uma componente teórica(CIT);
- Será realizada individualmente em computador, com consulta ao material fornecido, e duração não superior a 120 minutos;
- CI é a média aritmética das notas obtidas em cada um dos quatro momentos.
A avaliação da Componente de Grupo inclui 2 trabalhos a realizar em grupo (de 3 estudantes), de igual peso, sendo em cada um destes pontos de avaliação contabilizado o empenho e assiduidade do estudante no trabalho de grupo.
A Classificação Final (CF) é portanto computada da seguinte forma:
CF = CI*0,6 + CG*0,4
Onde:
CI = média das 4 notas obtidas nos momentos de avaliação individual
CG = avaliação correspondente à componente de grupo
Para aprovação na disciplina, o estudante deve obter uma classificação mínima de 35% (7 valores em 20) em qualquer das componentes: CIP, CIT e CG.
Provas e trabalhos especiais
A Componente Individual será realizada em computador (a componente de programação envolve testes unitários), com recurso ao Sistema SIGEX.
Avaliação especial (TE, DA, ...)
Os estudantes inscritos ao abrigo de regimes especiais sem frequência de aulas práticas:
- podem efetuar a Componente de Grupo (CG) de avaliação constituindo grupo com outros colegas ou sozinhos, devendo acordar com os docentes o trabalho a realizar e as datas de avaliação dos mesmos.
- devem realizar a avaliação individual CI nas datas estipuladas.
Melhoria de classificação
A realizar na época seguinte da unidade curricular