Programação Avançada - (DEI)

Propaganda
Impressão em: 03-01-2013 16:09:57
Ficha da Unidade Curricular (UC)
1. Identificação
Unidade Orgânica : Escola Superior de Tecnologia e Gestão
Curso : [IS] Informática para a Saúde
Tipo de Curso :
UC/Módulo : Programação Avançada
Carácter : obrigatória
Área Científica : Sistemas de Informação
ECTS : 6
Ano : 2º
Ano Letivo : 2011/2012
Semestre : 1º
Pré-Requisitos : Não tem.
Horas de Trabalho
Ensino Teórico (T)
30:00
Ensino Prático Laboratorial (PL)
45:00
Orientação Tutorial (OT)
5:00
Horas de Trab. Autónomo
82:00
Horas Totais
162:00
Idioma: Português e Inglês
2. Corpo Docente
Docente Responsável : António Carlos Alves Urbano
Docentes:
António Carlos Alves Urbano
Catarina Isabel Ferreira Viveiros Tavares Reis
3. Enquadramento
Esta UC pertence ao 2º ano e complementa os conceitos apreendidos no 1º ano em Computadores e
Programação e Complementos de Programação. O estudante adquire competência para utilização e
implementação de algoritmos e estruturas de dados na resolução dos problemas de engenharia de
software.
4. Objetivos/Competências
Gerais
C1. Conhecimentos sobre Programação Orientada aos Objetos
C2. Capacidade de desenvolver aplicações utilizando arquiteturas de software (MVC)
C3. Capacidade de armazenar (gravar e ler) eficientemente dados através de streams
C4. Estudo de conceitos básicos e fundamentos sobre estruturas de dados e algoritmos
C5. Capacidade de analisar estratégias de implementação destas estruturas de dados
C6. Capacidade de aplicar as estruturas de dados e algoritmos mais apropriados no desenvolvimento de projetos
C7. Capacidade de analisar a complexidade de um algoritmo
C8. Capacidade de desenvolver algoritmos eficientes
Específicas
C1. Breve revisão sobre POO. No fim desta unidade o estudante deverá saber:
C1.1. Identificar entidades (objetos), as suas características e comportamentos
C1.2. Relacionar as várias entidades de um problema
C1.3. Utilizar a POO no desenvolvimento de aplicações de software
C2. Arquitetura de software MVC. No fim desta unidade o estudante deverá saber:
C2.1. A importância de separar o armazenamento dos dados da sua apresentação
C2.2. Separar adequadamente o armazenamento dos dados da sua apresentação
C3. Noções básicas de Streams. No fim desta unidade o estudante deverá saber:
C3.1. Identificar e usar streams de entrada
C3.2. Identificar e usar streams de saída
C3.3. Identificar e usar streams de texto
C3.4. Identificar e usar streams binárias
C3.5. Identificar e usar streams processadas
C3.6. Identificar as streams adequadas para um dado problema
C4. Estruturas de dados genéricas
C4.1. Tabelas (revisões). No fim desta unidade o estudante deverá saber:
C4.1.1. Conceito de tabela
C4.1.2. Como são inicializadas as tabelas
C4.1.3. Como se acedem aos valores das tabelas
C4.1.4. Criar e utilizar tabelas multidimensionais
C4.1.5. Quais as vantagens e desvantagens na utilização de tabelas
C4.1.6. Tabelas em Java
C4.2. Listas. No fim desta unidade o estudante deverá saber:
C4.2.1. Conceito de lista ligada, duplamente ligada e lista circular
C4.2.2. As operações disponibilizadas por uma lista
C4.2.3. Implementar e utilizar listas ADT (em Java)
C4.2.4. Quais as vantagens e desvantagens da sua utilização comparativamente às tabelas
C4.2.5. Listas existentes no Java
C4.3. Pilhas e filas. No fim desta unidade o estudante deverá saber:
C4.3.1. Conceito de pilha e sua utilização
C4.3.2. As operações disponibilizadas por uma pilha
C4.3.3. Conceito de fila e respetiva utilização
C4.3.4. As operações disponibilizadas por uma fila
C4.3.5. Implementar e utilizar pilhas e filas ADT (em Java)
C4.3.6. Quais as vantagens e desvantagens da utilização destas estruturas
C4.3.7. Pilhas e Filas que existem no Java
C4.4. Tabelas de hash. No fim desta unidade o estudante deverá saber:
C4.4.1. Conceito de tabela de hash
C4.4.2. As operações disponibilizadas por uma tabela de hash
C4.4.3. Como funciona uma tabela de hash com separate chaining (tabelas de hash de listas)
C4.4.4. Como funciona uma tabela de hash com open addressing (tabelas de hash de sondagem linear, quadrática
e hashing duplo)
C4.4.5. Implementação e utilização de tabelas de hash ADT (em Java)
C4.4.6. Quais as vantagens e desvantagens da utilização destas estruturas
C4.4.7. Tabelas de hash existentes no Java
C4.5. Árvores binárias. No fim desta unidade o estudante deverá saber:
C4.5.1. Conceito de árvore binária
C4.5.2. As operações disponibilizadas por uma árvore binária
C4.5.3. Funcionamento de uma árvore binária que mantém os seus elementos ordenados
C4.5.4. Implementação e utilização de árvores binárias ADT (em Java)
C4.5.5. Quais as vantagens e desvantagens da utilização destas estruturas
C4.5.6. Quais as estruturas do Java que permitem ordenação
C5. Análise de algoritmos. No fim desta unidade o estudante deverá saber:
C5.1. Comparar diferentes algoritmos que resolvem o mesmo problema utilizando, por exemplo, a notação Big-Oh
C5.2. Implementar algoritmos eficientes
C6. Recursividade. No fim desta unidade o estudante deverá saber:
C6.1. Conceito de recursividade
C6.2. Quais as vantagens e desvantagens da sua utilização
C6.3. Como implementar estruturas de dados utilizando recursividade
Transversais
CT1.
CT2.
CT3.
CT4.
Capacidade de estudar autonomamente
Capacidade de trabalhar em equipa
Capacidade de realizar projetos
Capacidade de raciocínio lógico
5. Programa
5.1 Resumido
1. Breve revisão sobre POO
2. Arquitetura de software MVC
3. Noções básicas de Streams
4. Estruturas de dados genéricas
4.1. Tabelas (revisões)
4.2. Listas
4.3. Pilhas e filas
4.4. Tabelas de hash
4.5. Árvores binárias
5. Análise de algoritmos
6. Recursividade
5.2 Detalhado
1. Breve revisão sobre POO
1.1. Objetos e classes
1.2. Encapsulamento, herança e polimorfismo
2. Arquitetura de software MVC
2.1. Conceitos de modelo, vista e controlador
2.2. Separar o armazenamento dos dados da sua apresentação
3. Noções básicas de Streams
3.1. Streams de entrada e de saída
3.2. Streams de texto e streams binárias
3.3. Streams processadas
4. Estruturas de dados genéricas
4.1. Tabelas (revisões)
4.1.1. Conceito de tabela
4.1.2. Vantagens e desvantagens na utilização de tabelas
4.1.3. Tabelas em Java
4.2. Listas
4.2.1. Conceito de lista ligada, duplamente ligada e lista circular
4.2.2. Implementação e utilização de listas ADT (em Java)
4.2.3. Vantagens e desvantagens da sua utilização
4.2.4. Listas do Java
4.3. Pilhas e filas
4.3.1. Conceito de pilha e sua utilização
4.3.2. Conceito de fila e respetiva utilização
5.
6.
4.3.3. Implementação e utilização de pilhas e filas ADT (em Java)
4.3.4. Vantagens e desvantagens da utilização destas estruturas
4.3.5. Pilhas e Filas do Java
4.4. Tabelas de hash
4.4.1. Conceito de tabela de hash
4.4.2. Separate chaining: tabelas de hash de listas
4.4.3. Open addressing: Tabelas de hash de sondagem linear, quadrática e hashing duplo
4.4.4. Implementação e utilização de tabelas de hash ADT (em Java)
4.4.5. Vantagens e desvantagens da utilização destas estruturas
4.4.6. Tabelas de hash do Java
4.5. Árvores binárias
4.5.1. Conceito de árvore binária
4.5.2. Implementação e utilização de árvores binárias ADT (em Java)
4.5.3. Vantagens e desvantagens da utilização destas estruturas
Análise de algoritmos
5.1. Comparar diferentes algoritmos que resolvem o mesmo problema
5.2. Notação Big-Oh (simplificada)
Recursividade
6.1. Conceito de recursividade
6.2. Vantagens e desvantagens da sua utilização
5.3 Fundamentação da coerência dos conteúdos programáticos com os objetivos/competências da unidade
curricular
Os conteúdos programáticos lecionados contribuem para as competências gerais estabelecidas para a UC da seguinte forma:
1.
2.
3.
4.
5.
6.
Breve revisão sobre POO
1.1. Objetos e classes – (C1)
1.2. Encapsulamento, herança e polimorfismo – (C1)
Arquitetura de software MVC
2.1. Conceitos de modelo, vista e controlador – (C2)
2.2. Separar o armazenamento dos dados da sua apresentação – (C2)
Noções básicas de Streams
3.1. Streams de entrada e de saída – (C3)
3.2. Streams de texto e streams binárias – (C3)
3.3. Streams processadas – (C3)
Estruturas de dados genéricas
4.1. Tabelas (revisões)
4.1.1. Conceito de tabela – (C4, C5, C6)
4.1.2. Vantagens e desvantagens na utilização de tabelas – (C4, C5, C6)
4.1.3. Tabelas em Java – (C4, C5, C6)
4.2. Listas
4.2.1. Conceito de lista ligada, duplamente ligada e lista circular – (C4, C5, C6)
4.2.2. Implementação e utilização de listas ADT (em Java) – (C4, C5, C6)
4.2.3. Vantagens e desvantagens da sua utilização – (C4, C5, C6)
4.2.4. Listas do Java – (C4, C5, C6)
4.3. Pilhas e filas
4.3.1. Conceito de pilha e sua utilização – (C4, C5, C6)
4.3.2. Conceito de fila e respetiva utilização – (C4, C5, C6)
4.3.3. Implementação e utilização de pilhas e filas ADT (em Java) – (C4, C5, C6)
4.3.4. Vantagens e desvantagens da utilização destas estruturas – (C4, C5, C6)
4.3.5. Pilhas e Filas do Java – (C4, C5, C6)
4.4. Tabelas de hash
4.4.1. Conceito de tabela de hash – (C4, C5, C6)
4.4.2. Separate chaining: tabelas de hash de listas – (C4, C5, C6)
4.4.3. Open addressing: Tabelas de hash de sondagem linear, quadrática e hashing duplo – (C4, C5, C6)
4.4.4. Implementação e utilização de tabelas de hash ADT (em Java) – (C4, C5, C6)
4.4.5. Vantagens e desvantagens da utilização destas estruturas – (C4, C5, C6)
4.4.6. Tabelas de hash do Java – (C4, C5, C6)
4.5. Árvores binárias
4.5.1. Conceito de árvore binária – (C4, C5, C6)
4.5.2. Implementação e utilização de árvores binárias ADT (em Java) – (C4, C5, C6)
4.5.3. Vantagens e desvantagens da utilização destas estruturas – (C4, C5, C6)
Análise de algoritmos
5.1. Comparar diferentes algoritmos que resolvem o mesmo problema – (C7, C8)
5.2. Notação Big-Oh (simplificada) – (C7, C8)
Recursividade
6.1. Conceito de recursividade – (C5, C7, C8)
6.2. Vantagens e desvantagens da sua utilização – (C5, C7, C8)
6. Metodologia de Ensino / Aprendizagem
6.1 Presencial e Autónoma
1. Ensino teórico
1.1 Apresentação dos conceitos sobre algoritmos e estruturas de dados
1.2 Exemplificação e aplicação a problemas reais
2. Ensino prático
2.1 Resolução de problemas através da programação de algoritmos e aplicação de estruturas de dados
2.2 Análise crítica dos resultados
2.3 As últimas aulas serão de apoio ao projeto
3. Orientação tutorial
3.1 Sessões de orientação pessoal para conduzir o processo de aprendizagem e esclarecerem-se dúvidas
1. Estudo
1.1 Leitura da bibliografia indicada e resolução de exercícios de forma a aprofundar e complementar o conhecimento
1.2 Resolução dos exercícios recomendados pela unidade curricular
2. E-aprendizagem
2.1 Consulta de material relativo à unidade curricular
3.
Reunião com o colega de grupo de forma a dividirem tarefas do projeto e estudarem em conjunto os diversos conceitos
6.2 Recursos Específicos
1. Ensino teórico – sala de aula normal
2. Ensino prático – laboratório informático com computadores contendo:
2.1 JDK (Java Development Kit)
2.2 NetBeans ou Eclipse
3. Orientação tutorial – gabinete ou sala de aula normal
6.3 Fundamentação da coerência das metodologias de ensino com objetivos/competências da unidade
curricular
As metodologias de ensino usadas contribuem para as competências gerais estabelecidas para a UC da seguinte forma:
Presencial
1. Ensino teórico
1.1 Apresentação dos conceitos sobre algoritmos e estruturas de dados – (C1, C4, C5, C7)
1.2 Exemplificação e aplicação a problemas reais – (C6, C7)
2. Ensino prático
2.1 Resolução de problemas através da programação de algoritmos e aplicação de estruturas de dados – (C2, C3, C5, C8)
2.2 Análise crítica dos resultados – (C6, C7)
2.3 As últimas aulas serão de apoio ao projeto – (C6, C8)
3. Orientação tutorial
3.1 Sessões de orientação pessoal para conduzir o processo de aprendizagem e esclarecerem-se dúvidas – (C1, C2, C3, C4,
C5, C6, C7, C8)
Autónoma
1. Estudo
1.1. Leitura da bibliografia indicada e resolução de exercícios de forma a aprofundar e complementar o conhecimento –
(C4, C5, C6, C7)
1.2. Resolução dos exercícios recomendados pela unidade curricular – (C6, C8)
2. E-aprendizagem
2.1. Consulta de material relativo à unidade curricular – (C4, C5, C6, C7)
3. Reunião com o colega de grupo de forma a dividirem tarefas do projeto e estudarem em conjunto os diversos conceitos – (C2,
C3, C5, C6, C7, C8)
7. Avaliação
7.1 Descrição
Os métodos de avaliação de conhecimentos e competências são os seguintes:
·
·
Avaliação Contínua:
- 2 provas escritas teóricas (10% + 20%)
- 1 projeto (grupos de 2 estudantes) (70% - mínimo 8.5)
1ª etapa (30%)
2ª etapa (40%)
Apresentação obrigatória de cada etapa do projeto
Sem mínimos nas componentes
Avaliação Final (Normal, Recurso e Especial):
- 1 prova escrita teórica (30%)
- 1 prova prática emm computador (70% - mínimo 8.5)
Por opção do estudante, qualquer das componentes pode ser substituída pela nota da componente respetiva obtida
numa época de avaliação anterior.
7.2 Número de Elementos de Avaliação
7.2.1 Contínua/Periódica: 3
7.2.2 Final: 2
8 Bibliografia
8.1 Principal
• Data structures & problem solving using Java (4ª edição), Mark Allen Weiss, Addison Wesley, 2009, ISBN: 978-0321541406
• Data Structures and Algorithms in Java (3ª edição), Adam Drozdek, Cengage Learning Asia, 2008, ISBN: 978-9814239233
• Thinking in Java (4ª edição), Bruce Heckel, Prentice-Hall, 2006, ISBN: 978-0131872486
• Data structures & algorithm analysis in Java, Mark Allen Weiss, Addison Wesley, 1998, ISBN: 978-0201357547
• Data structures in Java, Thomas Standish, Addison Wesley, 1997, ISBN: 978-0201305647
• Algorithms in C (3ª edição), Robert Sedgewick, Addison Wesley, 1997, ISBN: 978-0201314526
8.2 Complementar
• Introduction to algorithms (3ª edição), Cormen, Leiserson and Rivest, MIT Press, 2009, ISBN: 978-0262033848
• Programação Orientada aos Objectos em Java 2, F. Mário Martins, FCA, 2000, ISBN: 978-9727221967
• The Java Tutorials, http://download.oracle.com/javase/tutorial/
• Understanding Object-Oriented Programming with Java, Timothy Budd, Addison-Wesley, 1999, ISBN: 978-0201612738
• Introduction to Programming Using Java: An Object-Oriented Approach (2ª edição), David M. Arnow, Geral Weiss, AddisonWesley, 2003, ISBN: 978-0321200068
• The Java Tutorial (2ª edição), Mary Campione & Kathy Wallrath, Sunsoft Press, 1998, ISBN: 978-0201310078
• The Java Handbook, Patrick Naughton, Osborne/Mc Graw-Hill, 1996, ISBN: 978-0078821998
9. Aprovação pelo CTC
Aprovado em Conselho Científico em : 29-06-2012
Download