UNIDADES CURRICULARES ECTS

Objetivos de aprendizagem:

Esta unidade curricular tem os seguintes objetivos de aprendizagem:
• Conhecer em detalhe a arquitetura clássica de um SGBD, descrevendo em detalhe os seus algoritmos internos.
• Identificar e ser capaz de utilizar técnicas recentes e avançadas (por exemplo em controlo de concorrência, gestão de memória, recuperação e disponibilidade)
• Analisar e otimizar código transacional, identificando as causas de possíveis anomalias e corrigindo-as.
• Decidir questões de otimização, conhecendo a carga do sistema, manipulando índices, escolhendo tipos de dados, e modificando consultas.
• Identificar limitação do Modelo Relacional em algumas situações.
• Analisar, descrever e utilizar outros modelos que não o Relacional.
• Analisar, comparar e avaliar modelos e arquiteturas diferentes em diferentes contextos.

Conteúdos programáticos:

1. Arquitetura de um SGBD
1.1. Componentes de um SGBD
1.2. Transações
1.3. Tipos de transações
2. Controlo de Concorrência
2.1. Algoritmos de Fechos, Otimistas e Marcas Temporais
2.2. Controlo de Concorrência Multi-versão
2.3. Variantes First Committer Wins e First Updater Wins
2.4. Novos níveis de isolamento. Serialização Multi-versão
2.4. Snapshot Isolation (SI). Anomalias SI
2.6. Aplicações de SI, produtos que usam SI.
3. Armazenamento
3.1. N-ary (NSM), Decomposition Storage Model (DSM), Partition Attributes across Model (PAX)
3.2. Modelo Clotho. Análise de desempenho
4. Recuperação
4.1. O Gestor de Memória
4.2. Gestão de memória, controlo de concorrência e recuperação
4.3. Algoritmos de substituição de páginas
4.4. O Gestor de Memória e recuperaçao. Métodos de recuperação
4.5. Shadow Paging e Logging. O método WAL
4.6. O algoritmo ARIES
5. Modelo Objecto-Relacional
5.1. Métodos de decomposição. Horizontal, Vertical e mistos
5.2. Considerações de desempenho
6

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos cobrem os objectivos previstos, estando organizados em unidades que cobrem o estudo aprofundado dos componentes principais de um SGBD clássico, e a análise de novos modelos e arquiteturas. É uma unidade curricular de formação avançada, e os alunos têm a possibilidade de testar e de avaliar a implementação das técnicas, modelos e algoritmos estudados em produtos reais, comerciais ou não.

Metodologias de ensino (avaliação incluída):

Como todos os alunos dispõem de um portátil, instalam um SGBD com o qual trabalham parte da unidade curricular. Um SGBD de diferentes características (em colunas) é instalado para a parte final do conteúdo. As aulas Práticas Laboratoriais baseiam-se no desenvolvimento de mini-trabalhos, geralmente implicando a construção desde a conceção de uma base de dados. A base de dados construída é utilizada para resolução de exercícios. A instalação, configuração e administração das bases de dados fica a cargo dos alunos.
O método de avaliação compreende duas componentes:
A avaliação da componente teórico-prática inclui:
• 2 Testes escritos de avaliação individual
• O desempenho do aluno, incluindo assiduidade, resolução de problemas e participação activa nas aulas.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

Os objectivos de aprendizagem estão centrados na compreensão do funcionamento interno de um SGBD, do conhecimento dos seus componentes, e da análise de algoritmos e das implicações no desempenho. A resolução de exercícios práticos, combinados com implementação e programação, permite aos alunos adquirirem as competências necessárias.

Bibliografia:

1. Feliz Gouveia, Bases de Dados, Fundamentos e Aplicações, FCA, Lisboa, 2021.
2. Blaha, M., Premerlani, W. (1998). Object-Oriented Modeling and Design for Database Applications, Prentice-Hall.
3. Philip A. Bernstein, Vassos Hadzilacos, Nathan Goodman, Concurrency Control and Recovery in Database Systems, Addison-Wesley, 1987.
4. Chaudhri, A., Mary Loomis (1998), Object Databases in Practice, Prentice-Hall.
5. Jeffrey Ullman, Jenniffer Wisdom, Database Systems: the complete book, Prentice-Hall, 2008.
6. Manuais: PostgreSQL, MonetDB, db4o

Objetivos de aprendizagem:

Nesta unidade curricular (UC) pretende-se que os alunos conheçam as tecnologias e ferramentas de hardware e software actualmente aplicadas em sistemas ubicomp. Mais concretamente:
• Identificar e descrever as principais características dos sistemas ubicomp
• Distinguir e caracterizar as bases tecnológicas das comunicações sem fios utilizadas em sistemas ubicomp
• Listar e comparar os principais protocolos e serviços utilizados em sistemas ubicomp
• Analisar e relacionar os principais requisitos de sistema dos sistemas ubicomp
• Combinar e avaliar conceitos e tecnologias na especificação e desenvolvimento de sistemas ubicomp
• Utilizar micro-controladores, sensores e actuadores na prototipagem de sistemas ubicomp
• Aplicar e combinar tecnologias de comunicação sem fios e plataformas de serviços na integração e automação de sistemas ubicomp
• Descrever, contextualizar, analisar e comparar sistemas IoT/ubicomp utilizados na resolução de problemas da actividade humana

Conteúdos programáticos:

1. Introdução aos Sistemas UbiComp/IoT
2. Tecnologias de Comunicação sem Fios
3. Protocolos, Redes e Serviços IoT
4. Localização e Contexto
5. Requisitos de Sistema
6. Sistemas embebidos baseados em micro-controladores

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

O conteúdo programático cobre os objectivos previstos, uma vez que se organiza em módulos que endereçam especificamente os diferentes aspectos na base de sistemas UbiComp/IoT. O módulo 1 introduz, com recurso a exemplos, os aspectos fundamentais dos actuais sistemas UbiComp/IoT. Os conceitos mais teóricos de base tecológica e desenvolvimento são endereçados nos módulos 2, 3, 4 e 5 (cf. tecnologias de comunicação, protocolos e serviços, localização e contexto, e requisitos de sistema) e os conceitos mais práticos são abordados no módulo 7 (cf. sistemas embebidos com base nas plataformas Arduino e LoPy). Em todos os módulos teóricos são abordados os conceitos de base tecnológica associados a cada tema com exemplos típicos de projectos concretos existentes. Paralelamente, nos módulos práticos estimula-se o estudo e conhecimento de plataformas baseadas em micro-controladores com aplicação ao desenvolvimento de soluções UbiComp/IoT embebidas.

Metodologias de ensino (avaliação incluída):

Os conteúdos teóricos são introduzidos e expostos nas aulas teórico-práticas (TP), recorrendo tipicamente a projectos e tecnologias existentes, ilustrando a sua aplicação a problemas reais. Nas aulas práticas laboratoriais (PL) promove-se a exploração de plataformas embebidas recorrendo a kits de micro-controladores, sensores e actuadores. Nas aulas TP recorre-se tipicamente a publicações que abordam as tecnologias correntes e a sua aplicação ao desenvolvimento de sistemas UbiComp/IoT. Nas aulas PL os alunos instalam os IDEs associados às plataformas de hardware selecionadas, que utilizam para criar os seus projectos de experimentação tecnológica. As aulas são organizadas por módulos, endereçando os diferentes aspectos das plataformas (e.g., arquitectura e desenvolvimento, portas IO, comunicações, etc.) e complementando os conceitos teóricos.
A avaliação compreende duas componentes TP e PL:
50% TP (90% Test + 10% Cont. Eval) + 50% PL (45% Paper + 45% Prototipo + 10% Cont. Eval)

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

A metodologia de ensino foca-se no contacto e compreensão das principais tecnologias que estão na base do desenvolvimento dos sistemas UbiComp/IoT actuais. As aulas TP cobrem os vários aspectos da pilha protocolar, desde o nível físico ao nível de aplicação (cf. focando aspectos de comunicação, redes e serviços, percepção e actuação no contexto e gestão dinâmica de aplicações). Os exemplos de exercícios propostos nas aulas PL direccionam-se para a compreensão e aplicação das tecnologias recorrendo a kits de micro-controladores, sensores e actuadores, e módulos de comunicação. A resolução sequencial de labs (hands-on) pré-seleccionados estimulam a aplicação dos conhecimentos sobre as tecnologias expostas nas aulas. Esta prática permite consolidar o domínio sobre as tecnologias existentes e a sua utilização no processo de desenvolvimento de aplicações UbiComp/IoT, endereçando problemas concretos.

Bibliografia:

1. Jackob E. Bardram, A.J. Bernheim Brush, Anind K. Dey, Adrian Friday, John Krumm, Marc Langheinrich, Shwetak Patel, aaron Quigley, Alex S. Taylor, Alexander Varshavsky, Roy Want, Ubiquitous Computing Fundamentals, CRC Press, Taylors & Francis Group, Ed. John Krumm, 2010.
2. M. Weiser, The Computer for the Twenty-First Century. Scientific American, Vol. 265, No. 3, September 1991, pp. 94-104.
3. M. Satyanarayanan, Pervasive Computing: Vision and Challenges. IEEE Personal Communications, Vol. 8, No. 4, August 2001.
4. G. Coulouris, J. Dollimore & T. Kindberg, Distributed Systems: Concepts and Design, 4th Edition, Addison Wesley, 2005.
5. W. Stallings, Wireless Communications & Networks. 2nd Edition, Prentice Hall 2002.
6. A. Tanenbaum, Computer Networks. 4th Edition, Prentice Hall 2003.

Objetivos de aprendizagem:

O objetivo principal da disciplina é sensibilizar e preparar os alunos para o desenvolvimento de sistemas de informação, tendo em linha de conta a complexidade das organizações em contexto real. Adicionalmente, são fornecidos conhecimentos e práticas sobre abordagens, métodos, técnicas e ferramentas que possam facilitar e suportar estas atividades. As aulas expositivas são orientadas para a resolução de problemas e situações que exigem o trabalho individual para integrar esse conhecimento e as competências adquiridas na realização de um projeto que acompanha os diferentes temas da unidade curricular.

Conteúdos programáticos:

1. Fundamentos de Sistemas de Informação
1.1. Rever os fundamentos dos SI baseados em computador
1.2. O ambiente de desenvolvimento de SI
1.3. As origens do Software e relacionamento com os SI
2. Planeamento de Sistemas de Informação
2.1. O Processo de Planeamento e relacionamento com o negócio
2.2. Integrar o negócio com o SI: conceitos e desafios
2.3. Identificar e seleccionar projectos de Sistemas de Informação
3. Desenvolvimento de Sistemas de Informação
3.1. Conceitos e práticas de Desenvolvimento de Sistemas de Informação
3.2. Concepção de modelos de dados
3.3. Concepção de sistemas de reporte de informação
3.4. Concepção de sistemas de interacção e visualização
3.5. Exploração prática: o caso dos sistemas distribuídos e baseados na Web
4. Implementação e Manutenção de Sistemas de Informação
4.1. Implementação de Sistemas de Informação
4.2. Manutenção de Sistemas de Informação

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Após a conclusão de DSI, aluno deverá ser capaz de:
- Identificar os principais conceitos e mais-valias associadas aos sistemas e tecnologias de informação nas organizações e de como desenvolver sistemas de informação para estas;
- Reconhecer e identificar os fundamentos associados com a prática de conceção, desenvolvimento, implementação e manutenção de sistemas de informação;
- Gerir processos de desenvolvimento de sistemas de informação;
- Participar em esforços e projectos de desenvolvimento de sistemas de informação, de forma proactiva;
- Discutir e desenhar um plano para o contexto de sistemas distribuídos e baseados na Internet.

Metodologias de ensino (avaliação incluída):

Relatório de desenvolvimento de um projeto proposto e acompanhamento e participação nas propostas de desenvolvimento prático que vão sendo propostas. Os alunos podem ser chamados a apresentar e defender as opções de desenvolvimento tomadas.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

Desenvolvimento de Sistemas de Informação é uma unidade curricular, complementar de Análise de sistemas e que explora os esforços para a construção e conceção de sistemas de informação baseados em computador. O desenvolvimento de SI, tratando-se de um processo complexo, está integrado com um conjunto de atividades do ciclo de vida de um sistema de informação, pelo que a unidade curricular aborda as questões de enquadramento dos conceitos fundamentais, de modo a introduzir de forma autónoma o saber operacional pretendido. Em complemento, são abordados os aspetos essenciais da implementação e manutenção de sistemas de informação, nomeadamente as questões associadas com a vida dos sistemas de informação e como esta afeta o funcionamento das organizações. As questões de planeamento de Sistemas de Informação são também abordadas em complemento com a integração de negócio e que estendem a introdução realizada sobre gestão de projetos, na unidade curricular de Análise de Sistemas.

Bibliografia:

[1] Joey George & Joseph Valacich (2019). Modern Systems Analysis and Design. 8th Edition. Prentice Hall.
[2] Kennet Laudon & Jane Laudon (2017). Management Information Systems: Managing the Digital Firm. 15th Edition. Prentice Hall.
[3] Luis Borges Gouveia (2004). Sistemas de Informação para Gestão. SPI/Principia.
[4] Luis Borges Gouveia (2006). Conceitos fundamentais de Negócio Electrónico. SPI/Principia.
[5] David Avison & Guy Fitzgerald. (2011). Information Systems Development. Methodologies, techniques & tools. 4th Edition. McGraw Hill Higher Education

Objetivos de aprendizagem:

Os Objetivos principais da cadeira são:
- Sensibilizar e refletir sobre os conceitos essenciais associados com a disciplina de Interação Homem Máquina;
- Mostrar o que são, como se concebem, se implementam e se avaliam sistemas de interação e de interface apoiados em tecnologias de informação e comunicação para o desenvolvimento de aplicações e serviços em organizações;
- Descrever e analisar os mais recentes desenvolvimentos em interação e interfaces e discutir do seu impacte;
- Proporcionar conceitos válidos e de longa duração sobre Interação Homem Máquina que possam ser aplicados em contexto profissional.
As competências a desenvolver são:
- o aluno deve ser capaz de reconhecer a área de estudo e o objeto da Interação Homem-Máquina em sistemas de computador;
- o aluno deve ser capaz de aplicar técnicas e de compreender o contexto da sua utilização, nomeadamente considerando diferentes tipos de sistemas de computador, desde sistemas SCADA até ao uso da World Wide Web e, mais recentes

Conteúdos programáticos:

Parte I. Conceitos
1. Fundamentos
1.1 Interação Homem-máquina (IHM)
1.2. A IHM e as outras disciplinas
1.3. A importância da IHM
Parte II. Fatores Humanos
2. Características físicas do utilizador
3. Características mentais do utilizador
Parte III Sistemas
4. A interface e os sistemas interativos
5. Conceção de sistemas para pessoas
Parte IV Avaliação
6. Teste e avaliação
7. Ergonomia
8. Implicações sociais e o futuro da HCI

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Com a crescente utilização de redes e computadores em praticamente todos os sectores de atividade, a relação entre os seres humanos e os seus artefactos tecnológicos adquire maior importância. A diversidade de ferramentas digitais e o progressivo recurso a meios digitais para mediar a interação entre seres humanos requer que o estudo e desenvolvimento deste tipo de ferramentas e aplicações tenham em consideração aspetos associados com as questões de interação entre homem e máquina.
Esta unidade curricular tem como objetivo proporcionar uma introdução geral aos problemas da interação Homem-máquina. A abordagem propõe o estudo dos aspetos que facilitem o domínio dos princípios, modelos e técnicas de interação que permitem analisar, avaliar e melhorar as interfaces entre homens e máquinas e proporciona um contexto prático para a sua aplicação e discussão. Os conteúdos e práticas seguem as recomendações propostas pela ACM (Association for Computing Machinery, EUA) e o seu grupo.

Metodologias de ensino (avaliação incluída):

As aulas teóricas apresentam os conceitos com base em estratégias expositivas, complementadas pelo uso, sempre que considerado adequado, de meios audiovisuais e do recurso a exemplos e ao uso da World Wide Web para ilustrar e permitir associar os conceitos teóricos, com exemplos reais e situações concretas.
As aulas Teórico-práticas são desenvolvidas com base na apresentação de casos de estudo que ilustram os conceitos e os aplicam, complementados por uma lista de exercícios para assegurar que o aluno adquire as competências.necessárias para a resolução dos problemas apresentados. Nos temas onde se proporcione um uso de computadores tal é incentivado.
O método de avaliação compreende duas componentes, considerando uma estratégia de avaliação contínua.
A avaliação compreende uma prova, incidindo sobre conteúdos associados ao programa processado até ao momento do teste com um peso de 80% da nota final, incluindo uma parte descritiva e a resolução de pelo menos dois problemas práticos

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

A condução dos trabalhos é essencialmente prática e orientada para um conjunto de atividades que visa a produção de conteúdos e o desenvolvimento de um produto cujos requisitos proporcionem os problemas a que sejam utilizados os conceitos e técnicas apresentadas por via expositiva.
Adicionalmente, o desenvolvimento dos trabalhos é realizado de forma colaborativa, sendo apenas consideradas como trabalho individual, as contribuições de cada um dos elementos e a posterior apresentação da sua defesa em formato de apresentação rápida ao estilo Ignite (um powerpoint de 20 slides, com cada slide temporizado a 15 segundos, perfazendo um tempo total de 5 minutos)

Bibliografia:

Principal
[1] Sharp, H.; Rogers, Y.; Preece, J. (2015). Interaction Design. Edition. Wiley.
[2] Gouveia, L. (2016). Interação Humano Computador. UFP.
[A] Norman, D. (1998). The invisible computer. The MIT Press.
[B] Norman, D. (1993). Things that make us smart. Addison Wiley.

Objetivos de aprendizagem:

Esta unidade curricular pretende dotar os alunos de conhecimentos sobre as características das linguagens de programação existentes e dos paradigmas de programação associados, bem como sobre ferramentas e técnicas para o desenvolvimento de tradutores de linguagens. Os objectivos principais passam pela identificação e caraterização das linguagens de programação existentes, pelo conhecimento de ferramentas de desenvolvimento de compiladores e pelo estudo concreto de linguagens aplicando dois paradigmas distintos de desenvolvimento. Os alunos deverão ficar familiarizados com as potencialidades inerentes às diferentes linguagens de programação, dominar ferramentas de desenvolvimento de módulos (lexers e parsers) para a tradução de linguagens, bem como ser capazes de distinguir conceitos de desenvolvimento dos paradigmas imperativo e declarativo.

Conteúdos programáticos:

1. Conceitos Gerais sobre Linguagens de Programação (sintaxe e semântica)
2. Modelo de Programação Orientada aos Objectos
3. Modelo de Programação Funcional

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos estão coerentes com os objectivos de aprendizagem na medida em que abordam os temas principais sobre a caracterização das linguagens de programação existentes e das características dos paradigmas de programação a estas associados que deverão ser dominados pelos alunos no final da unidade curricular. Em particular começa-se por abordar os conceitos e características fundamentais das linguagens de programação existentes bem como das ferramentas de geração de lexers e parsers utilizados no desenvolvimento dos tradutores de linguagens. Particulariza-se ainda o estudo em duas linguagens de programação concretas, uma orientada aos objetos (Java) e outra funcional (Lisp). Todos os temas abordados são exemplificados com a aplicação de vários exercícios concretos. Os objectivos da aprendizagem estão portanto alinhados com os temas abordados tanto ao nível teórico-prático como prático, sendo aplicados em exemplos concretos variados tanto nas aulas como em trabalhos par

Metodologias de ensino (avaliação incluída):

Esta unidade curricular está organizada em aulas teórico-práticas (TP) e práticas (PR). A metodologia de ensino utilizada no âmbito das aulas TP baseia-se na exposição oral dos conteúdos programáticos e na sua exemplificação ou aplicação em situações concretas que demonstrem os temas abordados, nomeadamente sobre as características das linguagens de programação existentes e caracterização dos paradigmas a elas associados. Paralelamente, no contexto das aulas práticas laboratoriais, os alunos têm oportunidade de aplicar e desenvolver exercícios que complementam os conceitos aprendidos e aumentem a base de experiências com os temas abordados. A avaliação é contínua, contemplando em partes iguais a componente TP e PR. A componente TP é avaliada por um exame realizado durante o semestre. A componente PR é avaliada pela realização de projetos práticos cujos requisitos são propostos durante o semestre.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

As metodologias de ensino aplicadas nesta unidade curricular procuram levar os alunos a conhecer os diferentes aspectos das linguagens de programação existentes e as principais características dos paradigmas de programação associados a estas linguagens. Procura-se ainda que os alunos desenvolvam competências práticas na definição e geração de tradutores de linguagens (cf. lexers e parsers) através da utilização de ferramentas de desenvolvimento que automatizam esta tarefa. As aulas teórico-práticas e em particular as aulas práticas laboratoriais permitem um contato permanente com os aspectos de modelização e implementação das linguagens de programação, facilitando portanto o progresso gradual no conhecimento e caracterização dos paradigmas de programação existentes. Esta experiência e contato com exemplos práticos concretos permite melhorar o conhecimento das linguagens de programação e das ferramentas que permitem a geração automática de tradutores, que é essencial para o desenvolvimento técnico e obtenção de competências de programação nesta área.

Bibliografia:

[1] Fischer, Alice, Grodzinsky, Frances, “The Anatomy of Programming Languages”, Prentice-Hall, 1993.
[2] Appleby, Doris, “Programming Languages, Paradigm and Practices”, McGraw-Hill, 1991.
[3] Andre W. Appel, Modern Compiler Implementation in Java, 2nd Ed., Cambridge University Press 2004.
[4] Eckel, Bruce, “Thinking in Java”, President, MindView Inc., 1997, www.eckelobjects.com.
[5] Steel, Guy L. Jr., “Common Lisp”, 2nd Ed. (HTML Version: www.cs.virginia.edu/~vision/cltl2/clm/node1.html (Last visited 2012)).
[6] Moreira, Rui, Apontamentos de apoio às aulas de PP, UFP, 2009.

UNIDADES CURRICULARES ECTS

Objetivos de aprendizagem:

Estudar os fundamentos da gestão de conhecimento organizacional. Enquadrar a gestão de conhecimento com os objectivos estratégicos de uma organização, e com o sistema de informação. Elaborar sobre o recurso conhecimento, sistemas e meios digitais capazes de realizar a sua exploração, integrando os recursos humanos e práticas sociais

Conteúdos programáticos:

Fundamentos da Gestão de Conhecimento; A sociedade da informação e do conhecimento; Tipos de conhecimento organizacional; Práticas de GC nas Organizações; memórias organizacionais; aprendizagem organizacional; Comunidades de Práticas; Intranets e portais corporativos; Gestão de Competências; Taxionomias de competências; Sistemas de gestão de competências.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados cobrem as áreas de conhecimento que exploram o tema do conhecimento no contexto da sociedade da informação e o seu impacte para o indivíduo e para as organizações. Propõe o estudo do tema de modo a enquadrar os desafios que se colocam para a criação de sistemas de suporte à gestão do conhecimento com recurso ao digital.

Metodologias de ensino (avaliação incluída):

Recorre-se a uma metodologia expositiva, descritiva e demonstrativa no âmbito das aulas teórico-práticas, de modo a introduzir os conhecimentos que facilitam a compreensão dos princípios fundamentais da aplicação da gestão de conhecimento nas organizações.
A avaliação da componente teórico-prática inclui:
• 1 Teste escritos de avaliação individual sobre a matéria leccionada durante as aulas
• Desempenho do aluno: assiduidade, resolução de problemas e participação activa nas aulas.
A avaliação da componente prática inclui:
• O desenvolvimento de uma revisão bibliográfica e consequente análise, desenvolvimento e apresentação de trabalhos monográficos na área da Gestão de Conhecimento Organizacional.
• Apresentação e discussão no final do semestre do trabalho.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

As metodologias propostas estão em coerência com os objectivos formulados para a unidade curricular dado que focam na interpretação da teoria e na aplicação prática dos conceitos de gestão de conhecimento estudados, procurando-se estabelecer um paralelismo entre a teoria e a prática aplicada a problemas reais das organizações, e enquadrá-los na área da engenharia de software.

Bibliografia:

[1] Dalkir, K. (2011). Knowledge Management in Theory and Practice, The MIT Press
[2] Gouveia, L. (2019). Notas para uma abordagem à Gestão do Conhecimento. UFP.
Bibliografia complementar
[a] Nonaka, I. and Takeuchi, H. (1995) The Knowledge-Creating Company, Oxford University Press.
[b] Drucker, P. (1998) The Coming of the New Organisation, Harvard Business Review on Knowledge Management, Harvard Business School Press, pp. 1-20.
[c] Davenport, T. and Prusak, L. (2000) Working Knowledge, Harvard Business School Press.

Objetivos de aprendizagem:

Ao completar com sucesso a unidade curricular os alunos devem ser capazes de (learning outcomes - LO):
LO1-entender a noção de agentes inteligentes
LO2-formular a resolução de problemas através de pesquisa
LO3-aplicar pesquisa não informada, informada e pesquisa local
LO4-aplicar algoritmos evolucionários
LO5-aplicar pesquisa considerando adversários
LO6-experimentar agentes lógicos e programação em lógica
LO7-aplicar modelos de aprendizagem básicos: estatísticos e construção de árvores de decisão
LO8-avaliar modelos aprendidos através de observações

Conteúdos programáticos:

1. Introdução à Inteligência Artificial
2. Agentes Inteligentes
2.2 Agentes, Ambientes e Propriedades
2.2 Estruturas de Agentes
3. Pesquisa
3.1 Resolução de Problemas usando Pesquisa
3.2 Pesquisa não informada
3.3 Pesquisa informada
3.4 Pesquisa em Ambientes Complexos
3.5 Problemas com Satisfação de Restrições
3.6 Problemas com Adversários e Jogos
4. Representação do Conhecimento, Raciocínio e Lógica
4.1 Agente Baseado em Conhecimento
4.2 Representação, Raciocínio e Lógica
4.3 Lógica Proposicional, de Primeira-Ordem, Modal e Temporal
5. Introdução à Programação em Lógica
5.1 Cláusulas, Factos e Regras
5.2 Sintaxe e Tipos de Dados em Prolog
5.3 Mecanismos de Unificação e Retrocesso
6. Aprendizagem Computacional
6.1 Aprendizagem com exemplos
6.2 Aprendizagem e incerteza
6.3 Redes Neuronais

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados são coerentes com os objectivos de aprendizagem da unidade curricular uma vez que existe uma grande convergência entre os capítulos do programa da cadeira e os conhecimentos que é suposto o aluno adquirir em cada um desses capítulos.
Os conceitos fundamentais de inteligência artificial e de agentes inteligentes são apresentados nos capítulos introdutórios, nos capítulos seguintes são apresentados vários métodos e técnicas de inteligência artificial como a pesquisa e a lógica. É, ainda, dado destaque à área de aprendizagem máquina.
Os objetivos da aprendizagem são atingidos complementando os conceitos teóricos com exemplos e exercícios concretos executados em ambiente de laboratório recorrendo a software apropriado.

Metodologias de ensino (avaliação incluída):

A aprovação nesta Unidade Curricular (UC) poderá ser obtida aplicando um dos dois modelos de avaliação previstos: M1 - modelo de avaliação contínua, aplicado durante as aulas; M2 - modelo de avaliação em exame, aplicado caso o aluno não aprove em avaliação contínua.
Elementos de avaliação previstos:
G1. Teste 1
G2. Teste 2
G3. Projeto(s) prático(s) e Trabalhos de casa
G4. Exame
M1 - Modelo de Avaliação Contínua:
Nota Prática de Avaliação Contínua (NPAC) = G3
NF1 = (G1 + G2 + 2*NPAC)/4
M2 - Modelo de Avaliação Exame:
NF2 = G4
Resultado possíveis de avaliação da UC:
a) Aluno atinge Nota Final positiva (NF1 >= 9,5 valores) em avaliação contínua. Aprova à UC com a NF1 de nota final.
b) Aluno não atinge positiva (NF1 < 9,5 valores) em avaliação contínua. Será avaliado em exame. Avaliação em exame é independente da avaliação contínua. Nota Final da UC é NF2

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

A metodologia de ensino/aprendizagem aplicada nesta unidade curricular bem como o seu sistema de avaliação encontram-se perfeitamente alinhados com os objectivos a atingir pelos alunos no final do período letivo. Os conceitos teóricos são apresentados, discutidos, aplicados e avaliados no contexto das aulas teóricas o que garante aos alunos uma base sólida de conhecimentos fundamentais para entenderem de forma aprofundada os desafios que se colocam a esta área do conhecimento. Por outro lado, para que o estudo não fique restrito a modelos conceptuais, nas aulas práticas são apresentados casos de estudo concretos e implementadas soluções para problemas reais recorrendo a ferramentas de software apropriadas. Esta combinação garante uma formação aos alunos que lhes permite conhecer os fundamentos científicos essenciais a uma boa compreensão do tema bem como a capacidade de eles se adaptarem a mudanças tecnológicas constantes. O processo de avaliação constituído por testes teóricos e trabalhos práticos garante também um correto equilíbrio entre o esforço dedicado a ambas as componentes. O objetivo é formar profissionais conhecedores das técnicas e ferramentas do estado da arte mas também garantir a sua capacidade de evolução futura.
Nesta unidade curricular os conceitos relacionados com a inteligência artificial são apresentados e avaliados na componente teórica. Estes conceitos são depois aplicados na resolução de fichas e trabalhos práticos no contexto das aulas práticas.

Bibliografia:

[1] Russell, Stuart ; Norvig, Peter, “Artificial Intelligence: A Modern Approach”, Prentice Hall, 4th edition, 2021
[2] Costa, E.; Simões, A., “Inteligência Artificial - Fundamentos e Aplicações”, Editora FCA, 2ª edição, 2008
[3] Witten, Frank, Hall, Pal, “Data Mining: Practical Machine Learning Tools and Techniques, 4rd Edition”, Morgan Kaufmann, 2017
[4] I. Bratko, "Prolog Programming for Artificial Intelligence, 4th edition", Pearson Education, 2011
[5] Aurélien Géron, Hands-on Machine Learning with Scikit-Learn, Keras, and
TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems, O'Reilly, 2019

Objetivos de aprendizagem:

Esta unidade curricular tem como objetivo aprofundar os conhecimentos de programação web recorrendo a uma abordagem com implementações com frontend e backend em dois componentes distintos. Estas ferramentas serão abordadas no sentido de apoiar o desenvolvimento do projeto nesta unidade curricular.
Ao completar com sucesso esta unidade curricular os alunos devem ser capazes de:
1. Ter capacidade para definir a arquitetura de uma aplicação web e os seus componentes.
2. Ter capacidade para definir e escolher as tecnologias para cada componente da aplicação.
3. Ter conhecimento de métodos de análise de código, desempenho de aplicações.
4. Ter conhecimento de técnicas de programação adaptadas a grandes projetos.
5. Ter capacidade para incluir técnicas de acessibilidade, internacionalização e localização.

Conteúdos programáticos:

0. Apresentação, Enquadramento e Objetivos, Metodologia e Sistema de Avaliação, Conteúdo Programático e Bibliografia
1. Introdução
2. O protocolo HTTP: introdução e funcionamento
3. Arquitetura básica de uma aplicação
4. Padrão de Arquitetura MVC
5. REST API
6. Segurança na Web: recomendações OWASP
7- Arquitecturas baseadas em serviços
8- Frameworks

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos cobrem os objetivos previstos, estando organizados em unidades que permitem estudar as principais áreas que caraterizam o desenvolvimento web. Inicialmente é feita uma apresentação sobre a ferramenta Docker. Depois serão abordados os conceitos de Framework para desenvolvimento em front-end e back-end. Os objetivos da aprendizagem são atingidos complementando estes conceitos com exemplos concretos executados em ambiente de laboratório recorrendo a breves apresentações / seminários e exercícios práticos. A realização prática de um projeto web permite aos alunos aplicarem e validarem conhecimentos adquiridos, e desenvolverem as competências previstas.

Metodologias de ensino (avaliação incluída):

A transmissão de conhecimentos nesta unidade curricular será efetuada recorrendo a metodologia expositiva e demonstrativa, onde nas aulas práticas são apresentados os conceitos fundamentais à compreensão dos temas do programa. Nessas aulas os alunos são confrontados com problemas reais que eles têm que resolver. A avaliação será calculada de acordo com a seguinte fórmula:
Nota final = 50% Entrega e Apresentação dos Exercícios Propostos (pesos equitativos por trabalho e defesa) + 50% Projeto Apresentado

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

A metodologia de ensino/aprendizagem aplicada nesta unidade curricular bem como o seu sistema de avaliação encontram-se perfeitamente alinhados com os objetivos a atingir pelos alunos no final do período letivo. Os conceitos são apresentados, discutidos, aplicados e avaliados no contexto das aulas. Isto garante aos alunos uma base sólida de conhecimentos fundamentais para entenderem de forma aprofundada os desafios que se colocam a esta área de conhecimento. Por outro lado, para que o estudo não fique restrito a modelos conceptuais, nas aulas práticas são apresentados casos de estudo concretos e implementadas soluções para problemas reais recorrendo as ferramentas apropriadas. Esta combinação garante uma formação aos alunos que lhes permite conhecer os fundamentos científicos essenciais a uma boa compreensão do tema bem como a capacidade de eles se adaptarem a mudanças tecnológicas constantes. O objetivo é formar profissionais conhecedores das técnicas, ferramentas, e do estado da arte. Nesta unidade curricular os objetivos de aprendizagem estão centrados na capacidade de definir e organizar um projeto de aplicação web. Através do desenvolvimento do próprio projeto, os alunos adquirem as competências necessárias para cumprir os objetivos.

Bibliografia:

Docker: Up & Running: Shipping Reliable Containers in Production, Sean P. Kane & Karl Matthias, 2018. O'Reilly.
Mastering Go: Create Golang production applications using network libraries, concurrency, machine learning, and advanced data structures, 2nd Edition, Mihalis Tsoukalos, 2019. Expert Insight.
React Cookbook: Recipes for Mastering the React Framework, David Griffiths & Dawn Griffiths, 2021. O'Reilly.
Introdução ao desenvolvimento moderno para a web - do front-end ao back-end: uma visão global! / Filipe Portela, FCA, 2018. ISBN: 978-972-722-897-3.
Typescript - o javascript moderno para criação de aplicações / Luís Abreu, FCA, 2017. ISBN: 978-972-722-864-5
Marty Hall and Larry Brown, Core Servlets and JavaServer Pages, Available free at http://pdf.coreservlets.com/
Microsoft, Web Application Architecture Guide, 2008.
Andrea Del Bene, Wicket user guide, 2013
Robin Nixon, Learning PHP, MySQL & JavaScript, 2014

Objetivos de aprendizagem:

Esta unidade curricular tem por objetivo dotar os alunos de conhecimentos técnicos e tecnologias emergentes sobre o projeto, desenvolvimento e implantação de sistemas backend, desenvolvendo os fundamentos, modelos e ferramentas de engenharia de software utilizados no projeto, gestão, desenvolvimento, avaliação, teste, implantação e documentação de sistemas backend.
Ao completar com sucesso esta unidade curricular os alunos devem ser capazes de:
- Gerir, planear, desenhar e desenvolver todo o projeto de um sistema
- Definir os componentes da arquitetura de um sistema de forma apropriada
- Escolher as ferramentas de desenvolvimento adequadas
- Desenvolver todo o sistema, tanto na vertente do código como na documentação de toda a aplicação
- Definir um plano de automação de testes e qualidade de software
- Implantar o sistema desenvolvido
- Perceber os conceitos de integração, entrega e implantação contínua

Conteúdos programáticos:

1 Especificação de requisitos de um sistema
2 Modelação de um sistema
3 Arquitetura de um sistema
4 Desenvolvimento de um sistema
5 Documentação de um sistema
6 Testes automáticos e qualidade de software
7 Integração e entrega contínua
8 Implantação de sistemas

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Como se pretende que os alunos desenvolvam competências aplicadas de definição e desenvolvimento de projetos com base em objetivos definidos, os conteúdos fornecem as competências essenciais para esse fim.

Metodologias de ensino (avaliação incluída):

A transmissão de conhecimentos nesta unidade curricular será efetuada recorrendo a aulas de cariz teórico-prático, onde são apresentados os conceitos fundamentais à compreensão dos temas do programa. Os alunos têm ainda oportunidade de aplicar e desenvolver os seus projetos concretos que complementam a base de experiências sobre os temas abordados. A avaliação é contínua, através do desenvolvimento de um projeto individual.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

A metodologia de ensino é orientada para realização prática, aplicando conceitos e técnicas previamente apresentadas e discutidas, pelo que se considera adequada para a aquisição de competências práticas de desenvolvimento de projetos complexos.

Bibliografia:

[1] Guerreiro, S., “Introdução à Engenharia de Software”, FCA, 2015
[2] Pressman, R., ”Software Engineering: A practitioner’s Approach”, 8th Ed., McGraw-Hill, 2015.
[3] Labouardy, M., “Pipeline as Code: Continuous Delivery with Jenkins, Kubernetes, and Terraform”, Manning, 2021.
[4] Elder, M., Kitchener, J., Topol, B., “Hybrid Cloud Apps with OpenShift and Kubernetes: Delivering Highly Available Applications and Services”, O'Reilly, 2021.

Objetivos de aprendizagem:

Esta unidade curricular tem os seguintes objectivos de aprendizagem:
• Compreender que a segurança informática é abrangente
• Identificar os fatores da segurança
• Analisar, propor e aplicar medidas de segurança
• Conceber planos de segurança
• Analisar a aplicação de protocolos criptográficos
• Compreender o funcionamento de algoritmos simétricos
• Compreender o funcionamento de algoritmos assimétricos
• Compreender o funcionamento de ataques a algoritmos
• Aplicar conceitos de segurança no desenvolvimento de aplicações
• Compreender os princípios da auditoria informática
• Conceber e planear auditorias

Conteúdos programáticos:

1. Prática e políticas de segurança
1.2. Princípios gerais da segurança informática
1.3. Avaliação de risco
2. Medidas de segurança
2.1. Política de segurança
2.2. Estrutura de planos de segurança
2.3. Metodologias de análise de risco
3. Criptografia
3.1. Cifras e códigos
3.2. Cifras de Feistel
3.3. Análise de cifras e códigos
4. Algoritmos
4.1. Algoritmos simétricos
4.2. Criptoanálise e tipos de ataques
4.3. Algoritmos assimétricos
4.4. Algoritmo Whittield-Hellman
4.5. Algoritmo RSA
5. Segurança em Aplicações
5.1. Segurança programática
5.2. Testes de segurança
6 Auditoria

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos cobrem os objectivos previstos, fornecendo aos alunos os materiais necessários para que possam adquirir as competências. A parte inicial centra-se no Programa de Segurança, incluindo políticas e práticas, a segunda parte em Criptografia e segurança de aplicações, e a última parte na Auditoria.

Metodologias de ensino (avaliação incluída):

Recorre-se a uma metodologia expositiva, descritiva e demonstrativa no âmbito das aulas teórico-práticas, complementada com resolução de exercícios e casos práticos. Como todos os alunos dispõem de um portátil, podem instalar as aplicações necessárias.
As aulas Práticas Laboratoriais baseiam-se no desenvolvimento de mini-trabalhos, envolvendo na parte inicial análise e produção de documentos, e posteriormente utilização de aplicações.
O método de avaliação compreende duas componentes:
A avaliação da componente teórico-prática inclui:
• 2 Testes escritos de avaliação individual
• O desempenho do aluno, incluindo assiduidade, resolução de problemas e participação activa nas aulas.
A avaliação da componente prática-laboratorial inclui:
• A entrega nos prazos dos exercícios propostos.
A apresentação final do projeto de desenvolvido

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

Os objectivos de aprendizagem estão centrados na compreensão do papel importante da Segurança Informática e das técnicas existentes para garantir essa segurança. As aulas teórico-práticas permitem a análise e discussão de conceitos, técnicas e aplicações, que podem posteriormente ser testadas em laboratório.

Bibliografia:

[1] II e ANS, Segurança dos Sistemas e Tecnologias de Informação, Instituto de Informática e Autoridade Nacional de Segurança, 1995. ISBN: 972-96816-0-0 e 972-96837-0-0.
[2] Marianne Swanson e Barbara Guttman, Generally Accepted Principles and Practices for Securing Information Technology Systems, National Institute of Standards and Technology, Technology Administration, US department of Commerce, Setembro de 1996.
[3] NIST: An Introduction to Computer Security: the NIST Handbook. NIST Special Publication 800-12.
[4] Feliz Gouveia, Criptografia, UFP, 2001.
[5] Bruce Shneier, Applied Criptography, John Wiley and Sons Inc, 1995.
[6] Alberto Carneiro, Introdução à Segurança dos Sistemas de Informação, Lidel FCA, 2001.
[7] Alberto Carneiro, Auditoria de Sistemas de Informação, Lidel FCA, 2001.

UNIDADES CURRICULARES ECTS

Objetivos de aprendizagem:

Esta unidade curricular tem por objetivo principal a definição de um tema para o projeto de Dissertação de Mestrado e a escrita da respetiva proposta. Os objetivos incluem: fornecer ao estudante os fundamentos teóricos do método científico, garantir que sabe definir e planear um projeto de Dissertação e familiarizá-lo com os métodos necessários para pesquisar bibliografia relevante e estruturar uma Dissertação de Mestrado.
Ao completar com sucesso esta unidade curricular os alunos devem ser capazes de:
. Saber definir temas de Dissertação.
- Saber definir um projeto de Dissertação.
- Compreender os critérios de validade científica.
- Saber definir um plano de trabalho.
- Identificar e analisar restrições comuns.
- Ser capaz de organizar a escrita da Dissertação.
- Conhecer e saber identificar vários tipos de bibliografia.
- Ser capaz de pesquisar e encontrar informação relevante online.
- Ser capaz de organizar sistematicamente a informação reunida sobre um determinado tema.

Conteúdos programáticos:

1. O que é uma Dissertação de Mestrado.
1.1 Requisitos e estrutura de uma Dissertação.
1.2 Plano geral de uma Dissertação.
2. O Projeto da Dissertação.
2.1 A Proposta inicial da Dissertação.
2.2 Cronograma, recursos e custos.
2.3 Planeamento do trabalho.
2.4 Critérios de validade científica.
3. Bibliografia, técnicas de pesquisa de informação.
3.1 Tipos de bibliografia.
3.2 Fontes bibliográficas.
3.3 Ferramentas de gestão bibliográfica.
4. Formulação da Proposta de Dissertação.
4.1 Manuais de estilos.
4.2 A escrita.
4.3 Da proposta à Dissertação.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos cobrem as áreas de conhecimento essenciais e coerentes para atingir os objetivos formulados, dado que os tópicos principais incluídos no programa, tais como: o que é uma Dissertação de Mestrado; o projeto da dissertação; critérios de validade científica; bibliografia, técnicas de pesquisa de informação e formulação da proposta de dissertação, cobrem os principais aspetos do estudo que habilita o aluno a saber definir um tema e um projeto de Dissertação de Mestrado, compreender os critérios de validade científica do respetivo trabalho de investigação, saber definir um plano de trabalho e ser capaz de organizar a escrita da Dissertação de Mestrado, incluindo a estruturação do documento e a organização sistemática da informação obtida na bibliografia que aprendeu a pesquisar.

Metodologias de ensino (avaliação incluída):

Recorre-se a uma metodologia expositiva, descritiva e demonstrativa em aulas teórico-práticas, de modo a introduzir os conhecimentos sobre os métodos fundamentais da investigação científica e a respetiva aplicação prática para a elaboração deum projeto de investigação e uma proposta de Dissertação de Mestrado.
O método de avaliação baseia-se numa avaliação parcial por trabalhos, correspondentes a partes da proposta de dissertação:
• Proposta final (75%);
• Apresentação e discussão da proposta desenvolvida (25%).

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

As metodologias propostas estão em coerência com os objetivos formulados para a unidade curricular dado que apostam na interpretação da teoria e na aplicação prática dos conceitos de metodologia de investigação estudados, procurando-se estabelecer um paralelismo entre a teoria e a prática aplicada a problemas reais de estabelecimento de temas para Dissertações de Mestrado e desenvolvimento de propostas concretas de projetos de Dissertação de Mestrado no contexto da Engenharia Informática.

Bibliografia:

[1] Larry Christensen, R. Johnson, Lisa Turner (2013). Research Methods, Design, and Analysis, 12th Edition, Prentice Hall.
[2] Kenneth Bordens, Bruce Abbott (2013). Research Design and Methods: A Process Approach, 9th Edition, McGraw-Hill.

Objetivos de aprendizagem:

Esta unidade curricular de tem como objetivo principal o aprofundamento das várias questões relacionadas com a representação multimédia. Assim, o conteúdo desta unidade curricular pretende proporcionar ao aluno os fundamentos teóricos da compressão de informação, uma visão geral das várias técnicas de compressão multimédia existentes e uma análise aprofundada dos métodos e normas mais importantes para a codificação sem perdas de áudio, vídeo e imagem. Pretende-se identificar com clareza os princípios fundamentais, os algoritmos utilizados para a codificação sem perdas de áudio, vídeo e imagem, e comparar os vários formatos e normas em termos de abordagens, técnicas que utilizam e desempenho.

Conteúdos programáticos:

1. Princípios fundamentais da compressão. Modos de compressão. Categorias das técnicas de compressão. Técnicas de codificação Entropy Encoding e Source Encoding. Compressão e descompressão. Parâmetros para a avaliação de um sistema de compressão.
2. Métodos e normas para compressão sem perdas. Modelo genérico da compressão sem perdas. Codificação de Huffman e variações, Codificação Aritmética e normas para compressão sem perdas: JBIG, JPEG e JPEG-LS.
3. Métodos e normas para compressão de áudio e imagem. Quantificadores escalares uniformes: midtread e midrise. Normas para a compressão de áudio/voz com quantificadores. Esquemas de codificação básicos para a codificação com perdas recorrendo a quantificadores uniformes.
4. Projeto prático: desenvolvimento de um codec sem perdas para informação multimédia. Apresentação das principais normas de compressão de vídeo: codecs H.261 e H.263. As normas MPEG-1, MPEG-2 e MPEG-4 (parte 2 e AVC). O codec SMPTE VC-1/WMV-9.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados cobrem as áreas de conhecimento essenciais e coerentes para o atingir dos objetivos formulados, dado que os tópicos principais incluídos no programa, tais como: Princípios fundamentais da compressão, Métodos e normas para compressão sem perdas, Métodos e normas para compressão de áudio e imagem, e Realização de trabalhos práticos - Projeto prático: desenvolvimento de um codec sem perdas para informação multimédia, cobrem os principais aspetos do estudo que habilita o aluno a identificar com clareza os princípios fundamentais, os algoritmos utilizados para a codificação sem perdas de áudio, vídeo e imagem, e comparar e implementar sob a forma de software os vários formatos e normas de codificação de informação multimédia para sistemas interativos.

Metodologias de ensino (avaliação incluída):

Recorre-se a uma metodologia expositiva, descritiva e demonstrativa em aulas teórico/práticas, de modo a introduzir os princípios fundamentais e a aplicação prática dos algoritmos de compressão multimédia sem perdas que fazem parte das principais normas internacionais multimédia para imagem, áudio e vídeo digital. 0 método de avaliação da disciplina baseia-se no modelo da avaliação contínua e compreende 2 componentes:
1-Componente T/P: 1 teste escrito de avaliação individual (65% da classificação final) que incide sobre os conhecimentos lecionados até ao momento; o desempenho do aluno (5%), incluindo a assiduidade, o desempenho técnico, a participação ativa nas aulas e o interesse demonstrado pela matéria.
2-Componente Prática de projeto: a escrita de um artigo de revisão bibliográfica sobre um codec sem perdas (15%); a implementação do código do codec (15%) - um programa que implemente o algoritmo de compressão multimédia (codec).

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

As metodologias propostas estão em coerência com os objetivos formulados para a unidade curricular dado que apostam na interpretação da teoria e na aplicação prática dos conceitos de compressão em perdas estudados, procurando-se estabelecer um paralelismo entre a teoria e a prática aplicada a problemas reais de desenvolvimento de codecs de áudio, vídeo e imagem, contribuindo deste modo para desenvolver a capacidade do aluno para aplicar este tipo de técnicas no desenvolvimento de sistemas multimédia interativos, no contexto da Engenharia Informática.

Bibliografia:

[1] Ribeiro, N., Torres, J., Tecnologias de Compressão Multimédia, FCA – Editora de Informática, 2009.
[2] Sayood, K., Introduction to Data Compression, 4th Revised Edition, Elsevier, 2012.
[3] Salomon, D., Data Compression. The Complete Reference, 4th Edition., Springer, 2007.
[4] Li, Ze-Nian, Drew, Mark S., Liu, Jiangchuan, Fundamentals of Multimedia, 2nd Ed., Springer, 2014.
[5] Ribeiro, N., Multimédia e Tecnologias Interativas, 5ª Edição Aumentada, FCA – Editora de Informática, 2012. (ISBN: 9789727227440)
[6] Mengiy Pu, I., Fundamental Data Compression, Elsevier, 2006.
[7] Nelson, M., Gailly, J., The Data Compression Book: Programming in C, M&T Books; 2nd Ed, 1995.
[8] Zeeh, C., The Lempel Ziv Algorithm, Seminar "Famous Algorithms", 2013.
[9] Blelloch, G. E., Introduction to Data Compression, Carnegie Mellon University, 2001.
[10] Steinmetz, R., Nahrstedt, K., Multimedia Fundamentals, Vol. 1, 2nd Ed., Pearson - Prentice Hall, 2002.

Objetivos de aprendizagem:

O aluno deve ser capaz de:
- Definir a arquitetura e os componentes de uma aplicação complexa
- Definir requisitos de componentes a utilizar e escolher ambientes de desenvolvimento
- Utilizar padrões, e boas práticas dos ambientes escolhidos.
- Escolher as ferramentas de desenvolvimento adequadas
- Escolher as ferramentas de controlo de versões adequadas
- Definir baterias de testes específicos à aplicação

Conteúdos programáticos:

O Seminário de Sistemas e Aplicações integra conhecimentos de desenvolvimento de aplicações com algum grau de complexidade, e permite aos alunos definirem, desde a fase inicial, as técnicas, ferramentas e ambientes de desenvolvimento a utilizar. Pretende-se que os alunos tenham contacto e utilizem ferramentas integradas de desenvolvimento, de controlo de versões, e de testes automáticos, incluindo conceção de interfaces, código base e utilização de sistemas de gestão de bases de dados.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Propõe o recurso a uma área de trabalho para operacionalizar o ataque a um problema concreto.
Em face do problema, o objetivo é elaborar sobre como realizar a solução, de acordo com práticas de gestão de projetos e de especificação de sistemas

Metodologias de ensino (avaliação incluída):

As aulas teóricas apresentam os conceitos com base em estratégias expositivas, complementadas pelo uso, sempre que considerado adequado, de meios audiovisuais e do recurso a exemplos e ao uso da World Wide Web para ilustrar e permitir associar os conceitos teóricos, com exemplos reais e situações concretas.
As aulas Teórico-práticas são desenvolvidas com base na apresentação de casos de estudo que ilustram os conceitos e os aplicam, complementados por uma lista de exercícios para assegurar que o aluno adquire as competências.necessárias para a resolução dos problemas apresentados. Nos temas onde se proporcione um uso de computadores tal é incentivado.
O método de avaliação compreende duas componentes, considerando uma estratégia de avaliação contínua.

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

o seminário procura operacionalizar como se pode conduzir o ataque a um problema que envolva uma área de estudo e a sua aplicação em sistemas e aplicações

Bibliografia:

Material selecionado em sala de aula
Gouveia, L. (2020). Apontamentos sobre Ciência dos Dados. Universidade Fernando Pessoa. Reprografia da UFP.
Provost, F. e Fawcett, T. (2013). Data Science for Business. O'Reilly.
Gama, J. et al. (2012). Extração de Conhecimento de Dados. Edições Sílabo.
Rocha, M. e Ferreira, P. (2017). Análise e Exploração de Dados com R. FCA.

Objetivos de aprendizagem:

Ao completar com sucesso a unidade curricular os alunos devem ser capazes de (learning outcomes - LO):
LO1-entender os fundamentos sobre imagem e de representação de informação visual
LO2-discutir o sistema visual humano
LO3-aplicar operadores morfológicos em visão por computador
LO4-aplicar filtragem no domínio espacial
LO5-aplicar filtragem no domínio das frequências
LO6-explicar espaços de cor e segmentação de imagem baseada em cor
LO7-aplicar deteção de descontinuidades e contornos
LO8-aplicar calibração a câmara e obter informação de profundidade
LO9-experimentar segmentação de objetos
LO10-Identificar, testar, e aplicar diversas bibliotecas de software, ferramentas de desenvolvimento e hardware na implementação de aplicações de visão por computador
LO11-Utilizar e combinar ferramentas, envolvendo software e hardware, na especificação, desenvolvimento e teste de projetos de visão por computador

Conteúdos programáticos:

1. Introdução à Visão Computacional
1.1. Apresentação da Visão Computacional (VC)
1.2. Domínios de Aplicação da VC
2. Fundamentos sobre imagem
2.1. Introdução
2.2. Percepção visual
2.3. Formação da imagem
3. Processamento de imagem morfológico
3.1. Introdução
3.2. Morfologia matemática
3.3. Algoritmos morfológicos
4. Filtragem e melhoramento da imagem
4.1. Filtragem no domínio espacial
4.2. Filtragem no domínio das frequências
5. Processamento de imagens a cores
5.1. Introdução
5.2. Espaços de cor
5.3. Segmentação baseada em cor
6. Segmentação de imagem
6.1. Fundamentos de segmentação
6.2. Deteção de cantos
6.3. Deteção de regiões.
7. Representação e descrição
7.1. Descrição e representação de imagens
7.2. Descrição e representação de regiões
8. Câmaras e visão estéreo
8.1. Câmaras
8.2. Geometria epipolar e profundidade
9. Reconhecimento de objetos e imagens
9.1. Introdução
9.2. Reconhecimento de padrões

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da unidade curricular:

Os conteúdos programáticos apresentados são coerentes com os objectivos de aprendizagem da unidade curricular uma vez que existe uma grande convergência entre os capítulos do programa da cadeira e os conhecimentos que é suposto o aluno adquirir em cada um desses capítulos.
Os conceitos fundamentais de visão por computador, fundamentos sobre imagem e formação de imagem são apresentados nos capítulos introdutórios, nos capítulos seguintes são apresentados vários conceitos, técnicas e algoritmos relacionados com processamento de imagem em escalas de cinza e a cores. São ainda abordados algoritmos e técnicas de segmentação, descrição de imagem e de reconhecimento de objetos visuais.
Os objetivos da aprendizagem são atingidos complementando os conceitos teóricos com exemplos e exercícios concretos executados em ambiente de laboratório recorrendo a software apropriado

Metodologias de ensino (avaliação incluída):

Esta Unidade Curricular (UC) é classificada como de Projeto e contém competências nucleares que não são passíveis de avaliação em exame. Há elementos de avaliação contínua em cuja média pesada se exige positiva, a Nota Prática de Avaliação Contínua (NPAC)
Resultados de avaliação:
a) Aluno atinge objetivos mínimos (NPAC >= 9,5 valores) e Nota Final positiva (NF1 >=9,5 valores) em avaliação contínua. Aprova à UC com a NF1
b) Aluno atinge objetivos mínimos (NPAC >= 9,5 valores) e (NF1 < 9,5 valores). Pode ser avaliado em exame. Avaliação em exame é independente da avaliação contínua. Nota Final da UC é NF2
c) Aluno não atinge objetivos mínimos (NPAC < 9,5 valores). Não tem aprovação à UC e não poderá aceder ao exame
Elementos de avaliação previstos:
1. Teste 1
2. Teste 2
3. Projeto prático
4. Exame
Modelo de Avaliação Contínua:
NPAC = (3)
NF1 = ((1) + (2) + 2*NPAC)/4, NPAC >= 9,5
Modelo de Avaliação Exame (NPAC >= 9,5):
NF2 = (4)

Demonstração da coerência das metodologias de ensino com os objetivos de aprendizagem da unidade curricular:

A metodologia de ensino/aprendizagem aplicada nesta unidade curricular bem como o seu sistema de avaliação encontram-se perfeitamente alinhados com os objetivos a atingir pelos alunos no final do período letivo. Os conceitos teóricos são apresentados, discutidos, aplicados e avaliados no contexto das aulas teóricas o que garante aos alunos uma base sólida de conhecimentos fundamentais para entenderem de forma aprofundada os desafios que se colocam a esta área do conhecimento. Por outro lado, para que o estudo não fique restrito a modelos conceptuais, nas aulas práticas são apresentados casos de estudo concretos e implementadas soluções para problemas reais recorrendo a ferramentas de software apropriadas. Esta combinação garante uma formação aos alunos que lhes permite conhecer os fundamentos científicos essenciais a uma boa compreensão do tema bem como a capacidade de eles se adaptarem a mudanças tecnológicas constantes. O processo de avaliação constituído por testes teóricos e trabalhos práticos garante também um correto equilíbrio entre o esforço dedicado a ambas as componentes. O objectivo é formar profissionais conhecedores das técnicas e ferramentas do estado da arte mas também garantir a sua capacidade de evolução futura.
Nesta unidade curricular os conceitos relacionados com a visão por computador são apresentados e avaliados na componente teórica. Estes conceitos são depois aplicados na resolução das fichas e trabalhos práticos no contexto das aulas práticas

Bibliografia:

[1] Linda Shapiro, George Stockman, "Computer Vision", Prentice Hall, 2001
[2] Rafael Gonzalez, Richard Woods, "Digital Image Processing (4rd Edition)", Prentice Hall, 2018
[3] Richard Szeliski, "Computer Vision: Algorithms and Applications", Springer, 2010 (http://szeliski.org/Book/)
[4] Jain, Kasturi, Schunck, "Machine Vision", McGraw-Hill, 1995
[5] Kaehler, Bradski, "Learning OpenCV 3: Computer Vision in C++ with the OpenCV Library", O'Reilly Media, 2017
[6] Jan Erik Solem, “Programming Computer Vision with Python: Tools And Algorithms For Analyzing Images”, 1st Edition, O'Reilly Media, 2012
[7] Reinhard Klette, "Concise Computer Vision: An Introduction into Theory and Algorithms", 2014, Springer

UNIDADES CURRICULARES ECTS