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:

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 recentem

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 grupo de tr

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 val

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:

Nesta unidade curricular (UC) pretende-se que os alunos conheçam os principais aspectos do desenvolvimento de aplicações móveis, com destaque para a plataforma Android. Mais concretamente:
• Identificar as principais características e tecnologias de aplicações móveis
• Perceber e comparar as principais ferramentas de desenvolvimento de apps
• Compreender e desenhar apps em função dos principais aspectos que influenciam a sua arquitectura
• Utilizar ferramentas de desenvolvimento na implementação de apps para Android
• Conhecer e aplicar ferramentas de testes unitários e integração

Conteúdos programáticos:

1. Introdução às Aplicações Móveis
2. Plataformas de desenvolvimento de aplicações móveis
3. Desenho e Arquitectura de Aplicações Móveis
4. Programação de Aplicações Móveis em Android

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

O conteúdo programático organiza-se em módulos, endereçando os diferentes aspectos na base do desenvolvimento de aplicações móveis. Em concreto, o módulo 1 aborda a evolução histótica das tecnologias e aplicações móveis; o módulo 2 aborda e compara as caraterísticas das principais ferramentas de desenvolvimento de aplicações; o módulo 3 foca-se nos aspectos de desenho e arquitectura das aplicações móveis. Paralelamente, o módulo 4 abrange os aspectos mais práticos de desenvolvimento de plicações móveis para a plataforma Android. Os módulos teóricos abordam os vários aspectos e tecnologias de base no desenvolvimento de aplicações móveis; os aspectos de desenvolvimento são aplicados no módulo 4 com recurso a vários exemplos práticos (hands-on labs) de aplicações Android (e.g. padrões de interacção e gestão de eventos, localização e mapas, recursos e armazenamento de dados, comunicações, etc.).

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

Os aspectos mais teóricos são introduzidos nas aulas teórico-práticas (TP), cobrindo a evolução histórica das aplicações móveis, as principais plataformas de desenvolvimento e os diferentes aspectos na base do desenho e desenvolvimentos de aplicações móveis. Nas aulas práticas laboratoriais (PL) promove-se o estudo da plataforma Android recorrendo a vários labs onde se exploram as diversas vertentes da plataforma. As aulas PL são organizadas por módulos, endereçando os diferentes aspectos da plataforma Android (cf. interfaces, localização e mapas, armazenamento, comunicações, etc.), complementando os aspectos abordados nas aulas TP.
A avaliação compreende duas componentes TP e PL:
50% TP (90% Test + 10% Cont. Eval) + 50% PL (20% Specs & Arch Report + 70% App + 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 estudo e comparação das principais tecnologias e plataformas utilizadas no desenvolvimento de aplicações móveis. As aulas TP cobrem os vários aspectos de arquitectura e desenvolvimento de aplicações (e.g. usabilidade, desempenho, comunicações, armazenamento e sincronização de dados, segurança, etc.). Paralelamente, as aulas PL orientam-se por exercícios modulares direcionados para as várias vertentes das aplicações Android. A resolução sequencial de labs (hands-on) estimulam o desenvolvimento prático dos conhecimentos sobre aplicações móveis. Esta prática permite consolidar os diversos aspectos do processo de desenvolvimento de aplicações móveis com recurso a exercícios concretos.

Bibliografia:

1. G. Coulouris, J. Dollimore & T. Kindberg, Distributed Systems: Concepts and Design, 4th Edition, Addison Wesley, 2005.
2. T. Mikkonen, Programming Mobile Devices: an introduction for practitioners, John Wiley & Sons, 2007.
3. Android Developers, http://developer.android.com/, (accessed September 2019).

Objetivos de aprendizagem:

Esta unidade curricular tem como objetivo estudar particularidades da transmissão de dados em redes sem fios e os protocolos de comunicação sem fios mais relevantes.
Ao completar com sucesso esta unidade curricular os alunos devem ser capazes de:
1. Descrever a evolução e tendências de utilização dos protocolos de redes sem fios.
2. Identificar as limitações e contra medidas usadas em redes de comunicação sem fios.
3. Descrever os mecanismos de multiplexagem e acesso ao meio.
4. Descrever a arquitectura das redes sem fios de área pessoal, local e alargada.
5. Propor, desenhar, implementar, testar e gerir uma rede sem fios com um protocolo adequado a um cenário de aplicação concreto.

Conteúdos programáticos:

1. Redes sem fios – Factos, estatísticas e tendências.
2. Modulação, codificação e propagação de sinal.
3. Multiplexagem e acesso ao meio.
4. WLANs - IEEE 802.11
5. WPANs - Bluetooth e Bluetooth Low Energy. IEEE 802.15.4 e 6loWPAN
6. LPWANs – LoRa e Sigfox
7. WWANs – Evolução das redes celulares do 2G - 4G. Redes 5G.

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

Esta unidade curricular é dedicada ao estudo das características da transmissão de dados em redes de comunicação sem fios e dos protocolos de rede mais relevantes em diferentes cenários de utilização. O primeiro capítulo contextualiza o tema. Os conceitos fundamentais da transmissão sem fios são apresentados nos segundo e terceiro capítulos. Os restantes capítulos são dedicados ao estudo de protocolos de rede adequados a diferences cenários de utilização destacando as WLANs, os protocolos de suporte a IoT (WPANs e LPWANs) e às redes celulares (WWANs). Os objectivos da aprendizagem são atingidos complementando os conceitos teóricos com exemplos concretos executados em ambiente de laboratório recorrendo a simuladores e dispositivos físicos.

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 e prático em ambiente laboratorial. Nas aulas teóricas são apresentados os conceitos fundamentais à compreensão dos temas do programa. Nas aulas práticas os alunos são confrontados com problemas reais que têm que resolver recorrendo a simuladores e dispositivos adequados. A avaliação das competências adquiridas pelo aluno nesta UC é composta pelos seguintes elementos de avaliação:
(1) Teste de Avaliação
(2) Projetos práticos
(3) Exame(s)
Avaliação Contínua:
Nota Prática (NP) = Média dos Projetos práticos propostos
Nota Final = ((1) + NP) /2, NP>=9,5
Avaliação em Exame (NP>=9,5):
Nota Final = (3)

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 da transmissão de dados em redes de comunicação sem fios e no conhecimento das características, arquitectura e aplicações dos protocolos de comunicação sem fios. A resolução de fichas de exercícios e dos projetos práticos de implementação e teste de protocolos de comunicação sem fios permitem aos alunos adquirirem as competências necessárias.

Bibliografia:

[1] Beard, C.; Stallings, W. – "Wireless Communication Networks and Systems" - Pearson, 2016.
[2] Schiller, J. – Mobile Communications 2nd ed. – Addison Wesley 2003.
[3] Tanenbaum, A.; Feamster, N.; Wetherall, D. – “Computer Networks 6th Edition – Pearson 2020.
[4] IEEE Wireless Communications, https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=7742

UNIDADES CURRICULARES ECTS

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:

Conhecer os protocolos de suporte para mobilidade em redes IP. Conhecimentos para efetuar a simulação protocolos de suporte para mobilidade em redes IP em laboratório Estudar as limitações dos protocolos de transporte usados na Internet em cenários de mobilidade e analisar as diferentes soluções existentes na literatura. Conhecimentos para efetuar a simulação protocolos de transporte com suporte para mobilidade em redes IP em laboratório. Estudar a arquitetura e funcionamento das redes de comunicação sem fios num contexto de convergência. Estudar o protocolo SIP/SDP. Conhecimentos para implementar um sistema de comunicação baseado no protocolo SIP/SDP.

Conteúdos programáticos:

Mobilidade em redes IP: Introdução, MIPv4, MIPv6, Micro Mobilidade em redes IP, Mobilidade em redes Ad-Hoc e “Mesh”, Comparação com outros modelos de mobilidade. Suporte para mobilidade no nível de transporte: TCP tradicional em revisão, Impacte da mobilidade no TCP, Melhoramentos clássicos ao TCP. As redes de comunicação do futuro: Introdução, A evolução e convergência entre redes de comunicação sem fios.

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 da mobilidade em redes IP são apresentados no primeiro capítulo. De seguida são analisadas as limitações dos protocolos de transporte usados na Internet em cenários de mobilidade e algumas alternativas são analisadas. Por fim são estudadas as redes de telecomunicações sem fios num cenário de convergência. Os objectivos da aprendizagem são atingidos complementando os conceitos teóricos com exemplos concretos executados em ambiente de laboratório recorrendo a simuladores e equipamentos de rede.

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 e prático em ambiente laboratorial. Nas aulas teóricas são apresentados os conceitos fundamentais à compreensão dos temas do programa. Nas aulas práticas os alunos são confrontados com problemas reais que têm que resolver eventualmente recorrendo a equipamentos físicos ou virtuais (no contexto de simuladores) apropriados. A avaliação das competências adquiridas pelo aluno nesta UC é composta pelos seguintes elementos de avaliação:
(1) Teste de Avaliação
(2) Projetos práticos
(3) Exame(s)
Avaliação Contínua:
Nota Prática (NP) = Média dos Projetos práticos propostos
Nota Final = ((1) + NP) /2, NP>=9,5
Avaliação em Exame (NP>=9,5):
Nota Final = (3)

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 e equipamentos apropriados. 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 é estudada o problema da mobilidade em redes de comunicação sem fios. O programa começa por abordar os protocolos de suporte a mobilidade em redes IP. De seguida são estudados as principais limitações e alternativas para protocolos de transporte em redes sem fios com mobilidade. Finalmente é estudada a arquitetura das redes de telecomunicações do futuro num cenário de convergência e o uso dos protocolos SIP/SDP. Estes conceitos são depois aplicados na resolução das fichas e trabalhos práticos no contexto das aulas práticas.

Bibliografia:

[1] Sajal, S. et al., Mobility Management in IP Based Network, LAP 2015
[2] Schiller, J. – Mobile Communications 2nd ed., Addison Wesley 2003.
[3] Tanenbaum, A., et al., Computer Networks 6th Edition, Pearson 2021.
[4] IEEE Wireless Communications, https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=7742

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 ao longo do semestre, correspondentes a partes da proposta de dissertação:
• Proposta inicial (15%);
• Proposta intermédia (25%);
• Proposta final (60%).

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 ed. Prentice Hall.
[2] Kenneth Bordens, Bruce Abbott. (2017). Research Design and Methods: A Process Approach. 10th ed. McGraw-Hill.

Objetivos de aprendizagem:

Esta unidade curricular tem por objetivo dotar os alunos de conhecimentos técnicos sobre o projeto e desenvolvimento de aplicações móveis, desenvolvendo os fundamentos, modelos e ferramentas de engenharia de software utilizados no projeto, gestão, desenvolvimento, avaliação e teste, e documentação de aplicações móveis.
Ao completar com sucesso esta unidade curricular os alunos devem ser capazes de:
- Gerir, planear, desenhar e desenvolver todo o projeto de um sistema/aplicação móvel
- Definir os componentes da arquitetura de uma aplicação móvel
- Desenvolver todo o projeto, tanto na vertente do código como na documentação do projeto e de toda a aplicação
- Utilizar um Sistema de Controlo de Versões
- Definir um plano de automação de testes de software
- Perceber os conceitos de integração, entrega e implantação contínua
- Entender os conceitos de qualidade e análise estática de código
- Desenhar e desenvolver processos de otimização e melhoria de desempenho de software

Conteúdos programáticos:

1 Introdução
1.1 Revisão de processos da engenharia de software
1.2 Revisão de conceitos de planeamento e projeto de software
1.3 Introdução ao Projeto de Aplicações Móveis
2. Projeto de Aplicações Móveis
2.1 Interfaces gráficas
2.2 Interatividade
2.3 Navegação
2.4 Gestão de estados
2.5 Networking
2.6 Persistência de dados
3. Ferramentas de engenharia de software
3.1 Controlo de versões
3.2 Análise estática de código
3.3 Optimização de código
3.4 Melhoria de desempenho de software
4. Prática da engenharia de software
4.1 Ferramentas de desenvolvimento
4.2 Testes automatizados
4.3 Integração contínua
4.4 Entrega contínua
4.5 Implantação contínua

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 principais temas sobre a definição e planeamento de projetos de aplicações móveis bem como sobre a caracterização de aplicações móveis e das plataformas existentes, que deverão ser dominados pelos alunos no final da unidade curricular. Em particular começa-se por abordar os conceitos fundamentais inerentes aos projetos de aplicações móveis e aos diferentes aspectos que caracterizam as plataformas e aplicações móveis existentes. Particulariza-se o projeto e desenvolvimento de aplicações móveis através de exemplos de aplicação 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 variados concretos nas aulas e também por via da realização de um projeto de aplicação móvel.

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 e prático em ambiente laboratorial. Nas aulas teórico-práticas são apresentados os conceitos fundamentais à compreensão dos temas do programa. Nas aulas práticas laboratoriais os alunos são confrontados com exercícios que têm que resolver recorrendo às ferramentas de desenvolvimento de aplicações móveis. 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 das competências adquiridas pelo aluno nesta unidade curricular é composta pelos seguintes elementos de avaliação:
1. Projeto prático
Avaliação Contínua:
NF = (1)
Esta unidade curricular não é passível de ser avaliada por exame (Arto 19, ponto 3.2.1 da Normativa Académica, Reg. 927 de 3 de dezembro de 2019).

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 aspectos mais importantes no planeamento e desenvolvimento de projetos de aplicações móveis bem como caracterizar as principais plataformas móveis existentes. Procura-se ainda que os alunos desenvolvam competências práticas na estruturação e desenvolvimento de aplicações móveis concretizados nas ferramentas de desenvolvimento propostas. As aulas teórico-práticas e em particular as aulas práticas laboratoriais permitem um contato permanente com o projeto e desenvolvimento de aplicações móveis, facilitando portanto o progresso gradual no planeamento e implementação destas aplicações para as plataformas existentes. Esta experiência e contato com contextos práticos concretos permite melhorar as competências de planeamento e gestão de projetos de aplicações móveis bem como sobre as plataformas e ferramentas de desenvolvimento, que são essenciais para melhorar as competências técnicas e de programação nesta área.

Bibliografia:

[1] McWherter, J., Gowell, S., “Professional Mobile Application Development”, Wrox Press, 2012.
[2] Payne, R., “Beginning App Development with Flutter: Create Cross-Platform Mobile Apps”, Apress, 2019.
[3] Napoli, M., “Beginning Flutter: A Hands On Guide to App Development”, Wiley, 2019.
[4] Tyagi, P., “Pragmatic Flutter: Building Cross-Platform Mobile Apps for Android, iOS, Web & Desktop”, CRC Press, 2021.

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