Nesta página apresentam-se as várias Unidades Curriculares (UCs) que existem no Departamento de Informática, organizadas por área científica.
João P. Carvalho, Carlos Fernandes, Daniel Fernandes, Sérgio Ferreira.
Esta unidade curricular visa apresentar aos estudantes os conceitos básicos conducentes à compreensão de Unidades Curriculares mais avançadas, nomeadamente no domínio da arquitetura de computadores. Tem ainda como objetivo potenciar o desenvolvimento do racíonio lógico.
1. Códigos numéricos e Sistemas de Numeração (5%) Circuitos Lógicos Básicos (5%)
2. Álgebra de Boole (10%)
3. Funções Lógicas (10%)
4. Circuitos Combinatórios Básicos( 15%)
5. Circuitos Digitais com Memória (25%)
6. Síntese de Circuitos Sequênciais Elementares (25%)
Os conteúdos programáticos são adequados aos objectivos da disciplina tendo em conta a actualidade e o processo de Bolonha tendo uma forte componente prática laboratorial. A matéria das aulas teóricas está devidamente actualizada e adaptada ao perfil dos alunos para o 1º ano do Curso de Engenharia segundo o protocolo de Bolonha.
O responsável pela disciplina tem vindo a fazer evoluir os conteúdos programáticos ao longo dos anos em face da experiência profissional e académica próprias, tendo sempre presente o conteúdo programático das escolas de referência para as matérias leccionadas.
Aulas interativas com os alunos de forma a cativar os mesmos para terem uma base sólida de aprendizagem.
Daniel Fernandes, Paulo Guedes, Ricardo Santos, Sérgio Ferreira.
Esta unidade curricular (UC) introduz conceitos de circuitos lógicos combinatórios e sequenciais. Os alunos aprendem a construir uma máquina sequencial e posteriormente um microprocessador. Como transformar uma operação numa instrução que possa ser interpretada e executada por um processador é um dos objetivos principais desta UC.
Aulas Teóricas
Aulas Práticas
Entender o funcionamento dos computadores, de uma perspetiva microscópica até uma perspetiva macroscópica. Reconhecimento das potencialidades e limitações de um computador. Entendimento da forma como interagem os diversos elementos da estrutura/arquitetura de um computador.
Por descrever
Pedro Serra, Daniel Fernandes, Wellington Oliveira.
Esta unidade curricular vem completar os conhecimentos adquiridos anteriormente nas UCs de Sistemas Digitais e Arquitectura de Computadores, abordando temas mais actuais e conceitos de mais alto nível. A compreensão destes conceitos avançados de arquitectura de computadores faz com que os alunos tomem consciencia das limitações e possibilidades do hardware. Consequentemente poderão criar programas mais eficientes, capazes de tirar partido das capacidades do hardware e que tenham em conta as eventuais limitações deste.
1. Introdução
2. O processador
Principais módulos funcionais
Condutas e riscos
Exceções
Paralelismo ao nível da instrução
3. Hierarquia de memória
Dispositivos e tecnologia de armazenamento: disco magnético, memória flash
Memórias cache
Memória virtual
Confiabilidade na hierarquia de memória
Paralelismo: coerência entre caches, RAID
4. Arquiteturas paralelas
Limites de frequência, dissipação de energia e memória
Paralelismo e limites ao aumento de desempenho
SIMD e processadores vetoriais
Multithreading em hardware
Arquiteturas de multiprocessador¿ aglomerados e computação em grelha.
GPUs
Medição de desempenho
5. Virtualização
Origens e definição do conceito de máquina virtual
Conceito de hipervisor
Variantes de implementação
Virtualização de sistema: processador, memória, periféricos (E/S)
Exemplos de plataformas
Os estudantes devem conhecer os componentes de um computador moderno e compreender o seu funcionamento e as suas interações. Devem ser capazes de identificar o fluxo de dados e analizar o desempenho de um computador.
Esta competência é diretamente aplicável nos domínios do hardware e da administração de sistemas, e indiretamente aplicável no domínio do software – permitindo formar futuros engenheiros informáticos que tomem decisões de análise, desenho e implementação de software que tirem partido das capacidades do hardware e tenham em conta as eventuais limitações destas.
Trabalhos práticos com avaliação por pares
Trabalhos práticos com componentes electronicos físicos
João Craveiro, Daniel M. Silveira, João Madeira.
O objectivo desta UC é o de apresentar os princípios fundamentais dos Sistemas Operativos, de forma a permitir uma compreensão detalhada da sua arquitectura e funcionamento, dando aos alunos os conhecimentos e capacidades para utilizar, configurar e optimizar este componente fundamental dos sistemas informáticos.
No final da cadeira, os alunos deverão:
A aprendizagem é baseada em Aulas Teóricas e Práticas Laboratoriais, onde os alunos têm oportunidade de adquirir uma experiência aprofundada e directa dos principais temas abordados na cadeira, através da realização trabalhos e projectos centrados na implementação de funcionalidades essenciais dos Sistemas Operativos. O ensino é ilustrado por exemplos extraídos de alguns dos sistemas mais utilizados (Unix, Windows, …).
Disciplina focada na construção de aplicações distribuídas, onde se abordam os principais aspetos teóricos e práticos necessários para a construção dessas aplicações.
1. Introdução. Caracterização, requisitos, arquitectura e funcionalidades
2. Arquitecturas e Modelos de Comunicação Distribuída. Arquitecturas de sistemas, níveis de software
3. Comunicação entre Processos Distribuídos (IPC). Características da comunicação entre processos, Invocação, parâmetros e heterogeneidade de dados
4. Invocação Remota e Objectos Distribuídos. RPC: Modelo de execução. Linguagem de definição de interfaces (IDL). Plataformas de execução: Sun RPC, Java RMI
5. Nomeação e Serviços de Directório. Tipos de Nomes. Espaços de nomeação. Serviços de Directório (Web, X.500, LDAP)
6. Web Services (WS). Modelo de Execução Web Services (WS). O protocolo SOAP. Linguagens de definição de Serviços (WSDL)
7. Segurança. Modelo de segurança. Autenticação. Controlo de acesso
8. Sistemas de Ficheiros Distribuídos. Arquitecturas de SGF distribuídos. Implementações: NFS e AFS
9. Transações. Modelo transaccional. Propriedades ACID das transacções. Transacções distribuídas. Protocolo 2-phase-commit
Esta unidade curricular tem por objectivo abordar os principais modelos de computação distribuída, começando pelas técnicas fundamentais, apresentando de seguida as tecnologias associadas à invocação remota de objectos e arquitecturas orientadas aos serviços e terminando com os fundamentos de segurança e transações distribuídas.
São realizados mini-testes para garantir que os alunos acompanham regularmente a disciplina
Luis A. Gomes, Daniel Fernandes, Gabriela Soares, João P. Carvalho, Lucio Studer, Pedro Alves, Sofia Naique, Bruno Cipriano, Bruno Saraiva, Daniel M. Silveira, Diogo Morais, Duarte Neves, João Caldeira, João Craveiro, José Cascais Brás, Manuel M. Pita, Maria Silva, Pedro Perdigão, Pedro Serra, Rodrigo Correia, Rui Ribeiro, Rui Santos, Sérgio Ferreira, Sofia Fernandes, Wellington Oliveira, Zuil Pirola.
O Trabalho Final de Curso (TFC) é um elemento fundamental do currículo da Licenciaturas, funcionando como um momento nuclear na formação dos alunos, nomeadamente em ordem à
promoção da sua integração profissional e/ou iniciação ao trabalho científico.
O TFC deve corresponder a um projecto aplicado na área objecto de estudo, podendo incluir a realização de projectos de produção de soluções relevantes para os conteúdos dos curso,
desenvolvimento de software ou projectos de índole mais teórica ou académica. O TFC deve conduzir a resultados finais susceptíveis de utilização em contexto real (aparelho, programa, método, modelo conceptual, contributo para investigação ou conclusões sobre um problema).
CP1. Orientação.
CP2. Elaboração do estado da arte.
CP3. Desenvolvimento do projeto.
CP3.1. Identificação de problema
CP3.2. Planeamento do projecto
CP3.3. Demonstração de viabilidade
CP3.4. Execução
CP3.5. Controlo do projecto
CP3.6. Testes
CP4. Apresentação dos resultados.
O principal objectivo desta unidade curricular é de integrar os conceitos que foram adquiridos pelo aluno ao longo do curso, num projecto de âmbito alargado e onde o aluno autonomamente resolva um problema.
Este objectivo geral pode ser concretizado por:
OA1. Saber aplicar os princípios e técnicas associadas à conceção e implementação de casos reais ou simulados.
OA2. Saber aplicar os conhecimentos obtidos nas unidades curriculares do curso face a problemas ligados às mesmas, bem como a aplicação dos conhecimentos a novos paradigmas dos SI/TIC não abordados no curso.
OA3. Saber investigar o estado da arte no objeto de estudo.
OA4. Saber desenvolver um trabalho de natureza aplicada que integre os conhecimentos adquiridos ao longo da componente curricular do curso.
Por descrever
Esta unidade curricular pretende ser uma introdução à investigação e cultura científicas na área de informática e ciências da computação.
Os alunos observam a aplicação de conceitos elementares do processo de investigação científica, sendo também encorajados a utilizá-los em situações práticas. Pretende-se que estes conhecimentos, teóricos e práticos, sejam aplicados nas restantes unidades curriculares do mestrado, em particular na elaboração da proposta de dissertação.
Os objectivos pedagógicos desta UC são:
– adquirir a capacidade de ler e analisar criticamente uma publicação científica, identificando as suas principais contribuições de forma a que as possam sintetizar numa comunicação oral e/ou escrita estruturada.
– ter uma visão clara do processo de investigação científica, em particular do momento de pesquisa bibliográfica, devendo estar capacitados para executar este último de forma autónoma.
– ter a capacidade de estruturar o estado da arte numa dada área científica, identificando gaps que levem a perguntas de investigação.
– ter uma noção do processo de escrita e publicação científica e identificar uma estratégia de publicação
Embora nesta UC existam algumas aulas tradicionais, na maioria das sessões o docente tomará um papel menos activo – em particular, em sessões de journal club ou nas discussões após os seminários o docente tomará preferencialmente um papel de moderador na discussão, encorajando a participação dos alunos mas não impondo a sua visão.
A própria avaliação consistirá, em boa parte, de apresentações dos alunos.
Verifica-se que modelos similares, incluindo momentos de "flipped classroom", aumentam a participação dos alunos e a retenção de conhecimentos.
Esta unidade curricular suporta a execução da dissertação de mestrado. O seu resultado final é a elaboração e defesa da dissertação.
Os conteúdos programáticos são definidos em cada caso em função do tema escolhido pelo candidato com base no seu trabalho de pesquisa e em sugestões do orientador.
Esta unidade curricular suporta a execução da dissertação de mestrado. Na dissertação o aluno irá aprofundar um tema e apresentar um texto académico de acordo com o método experimental e científico e defendê-lo perante um júri. Irá aprofundar a sua capacidade de identificação de problemas, o estudo de problemas semelhantes e abordagens relevantes publicadas na literatura, a capacidade de resolução de problemas não triviais, a capacidade de avaliação dos resultados e de tirada de conclusões, a capacidade de escrever de forma compreensível e exata o seu trabalho e a capacidade de o apresentar e defender perante terceiros.
N.A.
Diogo Morais, Tomáz Saraiva.
Esta unidade curricular (UC) inscreve-se num contexto onde têm sido elencadas necessidades de adaptação dos especialistas em informática ao contexto das organizações, nomeadamente no que às denominadas soft skills diz respeito. Assim, pretende-se que os alunos desenvolvam conhecimentos ao nível das ferramentas básicas de empregabilidade (ex. Currículo, redes sociais e networking, marketing pessoal), gestão das emoções, gestão de tempo (ex. trabalho remoto), trabalho em equipa e liderança, comunicação e desenvolvimento de competências comportamentais e autoconhecimento. Por outro lado, é objetivo desta UC o desenvolvimento de um plano individual de desenvolvimento pessoal, bem como de aptidões que permitam aos alunos destingir entre factos e opiniões, conhecimento científico e senso comum. Sendo uma UC de índole prática, pretende-se que os conhecimentos sejam operacionalizáveis e tendentes ao desenvolvimento de competências transferíveis do plano académico para a domínio profissional.
Marketing Pessoal:
Pretende-se que os alunos desenvolvam conhecimentos ao nível das ferramentas básicas de empregabilidade (ex. Currículo, redes sociais e networking, marketing pessoal), gestão das emoções, gestão de tempo (ex. trabalho remoto), trabalho em equipa e liderança, comunicação e desenvolvimento de competências comportamentais e autoconhecimento. Por outro lado, é objetivo desta UC o desenvolvimento de um plano individual de desenvolvimento pessoal, bem como de aptidões que permitam aos alunos destingir entre factos e opiniões, conhecimento científico e senso comum. Sendo uma UC de índole prática, pretende-se que os conhecimentos sejam operacionalizáveis e tendentes ao desenvolvimento de competências transferíveis do plano académico para a domínio profissional.
Por descrever
A UC Instrumentos de Gestão insere-se no plano geral de formação na Licenciatura em Informática de Gestão, procurando estabelecer a ligação entre o ambiente informático e o ecossistema de negócios e dotar os alunos da necessária compreensão dos conceitos e princípios universais da Ciência Gestão de Empresas.
Tabela de Matérias:
.
Muitos projetos na área da programação envolvem a resolução de problemas computacionais complexos, para os quais soluções rápidas e simplistas podem não ser suficientemente eficientes. Esta UC foca-se na problemática da conceção de bons algoritmos e de como analisar a sua correção e a sua eficiência. Estas são questões particularmente importantes, numa altura a qualidade do software se vem tornado, progressivamente, numa questão central. Trata-se portanto de uma UC particularmente relevante para o ciclo de estudos.
CP1: Complexidade, classes, funções típicas e análise de algoritmos;
CP2: Complexidade e recursividade (conjunto de problemas recursivos);
CP3: Algoritmos de pesquisa e seleção;
CP4: Algoritmos de ordenação: Insertion Sort, Heap Sort, Merge Sort e Quicksort;
CP5: Comparação dos algoritmos de ordenação quanto à sua complexidade (programação do Quicksort);
CP6: Tipos abstratos de dados: Pilha e Fila;
CP7: array circular, listas simples e duplamente ligadas;
CP8: Implementação de Pilha e Fila (programação em array e / ou listas);
CP9: Funções de dispersão: aberta e fechada;
CP10: Tabelas de hash (prática de utilização de Dicionários e Conjuntos);
CP11: Árvore binária, árvores AVL e árvore preta e vermelha;
CP12: Árvore binária (programação de árvore binária);
CP13: Noções básicas de grafos: grafo orientado, não orientado e etiquetado, caminho e comprimento;
CP14: Caminho mais curto entre dois vértices – Algoritmo de Dijkstra;
CP15: Algoritmo de Dijkstra (programação).
OA1: Analisar e comparar a complexidade de algoritmos;
OA2: Aplicar a recursividade na resolução de problemas;
OA3: Explicar e usar alguns dos principais algoritmos de pesquisa, seleção e ordenação;
OA4: programar algoritmos de ordenação [aplicar o conhecimento (AC)];
OA5: Explicar e usar os tipos abstratos de dados: Pilha e Fila;
OA6: Programar uma Pilha e / ou Fila utilizando arrays ou listas (AC);
OA7: Explicar as funções de dispersão;
OA8: Usar as estruturas de dados Dicionários e Conjuntos na resolução de problemas (AC);
OA9: Explicar e usar as estruturas de dados: árvore binária, AVL e preta e vermelha;
OA10: Programar uma árvore binária (AC);
OA11: Explicar e dar exemplos da utilização de grafos na resolução de problemas;
OA12: Programar o algoritmo de Dijkstra (AC).
M1: Ensino expositivo: A apresentação de conceitos teóricos é feita de forma expositiva através de slides. Disponibilizam-se num canal Educast da FCCN video-tutoriais curtos desenvolvidos sobre os conceitos chave da disciplina.
M2: Ensino ativo: os conceitos teóricos são demonstrados recorrendo a "live coding" pelo docente.
M3: Aprendizagem experimental: São usadas fichas em Jupyter Notebook que permitem a experimentação imediata dos conceitos lecionados.
M4: Aprendizagem participativa: Durante as aulas é estimulada a discussão em grupo dos exercícios e projetos semanais.
M5: Auto-avaliação: foi desenvolvida uma plataforma que permite realizar quizzes para avaliação de todos os conhecimentos, cuja solução submetida é validada de forma automática.
M6: Aprendizagem orientada a projeto: são realizados de forma autónoma exercícios e projetos semanais com desafios exploratórios de aspectos complementares.
M7: Avaliação contínua: fichas semanais, quizzes, projetos, minitestes e frequencias.
Esta cadeira aborda uma variedade de tópicos relacionados à engenharia de dados numa perspectiva do Cientista de Dados, desde as diversas fontes de dados até a estrutura e disponibilização dos dados processados para modelos e visualização. Os alunos aprendem os fundamentos conceituais da engenharia de dados que permitem disponibilizar dados com qualidade para utilização em aplicações de ciência de dados.
A UC está organizada nos seguintes conteúdos programáticos:
OA1. Compreender os conceitos fundamentais de engenharia de dados.
OA2. Compreender o ciclo de vida da engenharia de dados.
OA3. Aprender a utilizar SQL para transformar e consultar dados.
OA4. Compreender técnicas de modelação de dados para organização e gestão de dados.
OA5. Construir pipelines para coletar, transformar, analisar e visualizar dados de fontes operacionais de dados.
OA6. Ser capaz de aplicar os princípios utilizados nas aulas para construir um pipeline completo da coleta à visualização de dados.
As aulas são expositivas e presenciais. Incentiva-se a participação ativa dos alunos/as no processo de ensino através de perguntas que estimulam o interesse pelos conteúdos da disciplina. Quando apropriado, a apresentação dos conteúdos é precedida pelo estudo de problemas específicos que os alunos conhecem. Alguns tópicos surgem na sequência da análise de problemas cuja resolução leva naturalmente à seu questionamento e/ou formulação. Sempre que possível, os conteúdos são ilustrados com exemplos e contraexemplos. Na maioria das sessões de aula, são apresentados problemas para que os alunos trabalhem independentemente, a fim de garantir a compreensão dos conceitos e técnicas abordados.
Esta UC tem como objetivo conferir competências introdutórias no campo da Inteligência Artificial, dotando os alunos de conhecimentos sólidos e estruturados que lhes permitam entender conceitos teóricos e desenvolver código para resolução de problemas práticos de IIA.
João P. Carvalho, Houda Harkat.
Esta unidade curricular e¿ dedicada ao processamento de imagem, como fonte sensorial de maior alto ni¿vel. Aqui sera¿o apresentadas as va¿rias tecnologias de sensores de imagem, a captac¿a¿o de imagem e em seguida sa¿o estudados os va¿rios me¿todos de tratamento de imagem e de extrac¿a¿o de informac¿a¿o. Na componente pra¿tica sera¿ desenvolvida uma aplicac¿a¿o de processamento de imagem, que ira¿ usar os alguns dos me¿todos aprendidos durante o semestre para resolver um problema pra¿tico que sera¿ proposto, usando a biblioteca OpenCV e linguagem c#. Ira¿ tambe¿m ser dado umas noções de introduc¿a¿o a¿ Intelige¿ncia Artifical aplicadas nas imagens.
Conteu¿dos de ensino a¿ dista¿ncia: Tutoriais e apoio em video-confere¿ncia e/ou em comunicac¿a¿o assi¿ncrona.
Pretende-se que no final do semestre os estudantes possuam:
Por descrever
Rui Ribeiro, João Caldeira, João Licínio.
A UC de Sistemas de Suporte à Decisão / Business Intelligence tem por objetivo garantir que há a introdução à temática de processos de análise de dados para apoio às áreas de gestão das empresas. Neste sentido, a UC tem um papel fundamental no ciclo de estudo na compreensão dos processos de gestão e decisão de organizações, para além de como colocar infraestruturas de dados ao serviço do negócio empresarial.
Por descrever
Esta disciplina oferece uma visão aprofundada do campo da Ciência de Dados, ensinando princípios e métodos fundamentais de análise e aprendizado a partir de dados. O curso é direcionado a analistas de dados sem conhecimentos prévios em estatística, e enfatiza a importância da ética na construção e uso de modelos obtidos a partir de dados. Os métodos de ensino incluem aulas tradicionais, debates em sala de aula e atividades de auto-avaliação, ajudando os alunos a desenvolver habilidades críticas e analíticas essenciais para o sucesso na ciência de dados. Ao final do curso, os alunos terão uma compreensão abrangente do campo, bem como as habilidades e conhecimentos necessários para se tornarem cientistas de dados de sucesso.
Incluir também as metodologias inovadoras de suporte ao processo de ensino-aprendizagem utilizadas
Esta cadeira é uma introdução aos conceitos e técnicas básicas da Inteligência Artificial, com três áreas principais de atuação. Primeiro, a formalização do que é uma máquina, tanto na óptica de manipulação de símbolos da máquina de Turing, como nas máquinas de McCulloch and Pitts que funcionam com padrões de interligação entre nós em redes de neurónios. Segundo, o conceito de agente racional em IA, que emerge da interseção com as ciências cognitivas, e as diversas implementações de algoritmos de busca exaustiva estruturada (informados e não informados). Ainda dentro desta área de foco são ainda introduzidos os conceito de busca estocástica e algoritmos para satisfação de restrições (CSPs). Finalmente, na terceira área de foco, os estudantes aprendem noções e usos de alguns dos algoritmos de inteligência artificial avançados que são utilizados hoje em dia.
Os objectivos de aprendizagem desta cadeira incluem (1) Entendimento profundo dos aspectos conceituais que dão origem à IA, nomeadamente a formalização do conceito de computação universal via manipulação de símbolos, e a computação baseada em redes de neurónios; (2) os métodos e representações usados para estudar o funcionamento de qualquer máquina; (3) Desenho e implementação de agentes racionais e o conceito de "processamento de informação"; (4) Algoritmos clássicos de busca não informada: British Museum, DFS e BFS; (5) Busca informada: Dijkstra e A*; (6) Formalização e resolução de problemas de satisfação de restrições (CSP); (7) conhecimentos básicos de técnicas avançadas de inteligência artificial nos domínios de machine learning e data science; e (8) Conhecimentos sobre os usos da inteligência artificial na sociedade incluindo aspectos relacionados com ética e o futuro de IA.
Por descrever
A disciplina de Introdução à Ciência de Dados tem como objectivo dar ao estudante competências essenciais na análise de dados, numa perspetiva multidisciplinar, como se trata a Ciência de Dados. Através da apresentação de metodologias e técnicas fundamentais para tratar, transformar, construir e analisar os dados, é objectivo desta disciplina dar ao estudante capacidade para traduzir essa análise em conhecimento e valor, de modo sustentado para a tomada de decisão.
A componente prática é um dos aspetos fundamentais da disciplina, pelo que a capacidade de traduzir conhecimento em ações práticas e decisões de análise é particularmente valorizada. A ligação estreita ao mundo empresarial para resposta a perguntas de negócios será retratada nesta disciplina.
1. Introdução à Ciência de Dados:
2. Python para Ciência de Dados
3. Pré-processamento de dados
4. Introdução ao Machine Learning, modelos superviosionados e não superviosionados
5. Micro-Serviços e fundamentos de APIs
A disciplina tem como objetivos dar ao aluno as competências para:
Nas aulas, introduzem-se os conceitos teóricos que são complementados com exemplos práticos reais. Os alunos são incentivados a resolver exercícios assim como a apresentar quaisquer dúvidas. Para cada tópico é apresentado um conjunto de exercícios de aplicação dos conceitos teóricos, procedendo-se ao acompanhamento da resolução dos mesmos e apresentando-se a resolução final.
Materiais de apoio e exercícios com sugestões de resolução serão disponibilizados no Moodle.
Acredita-se que a avaliação contínua, adaptada de acordo com a evolução dos alunos, seja uma boa prática. O acompanhamento individual e a disponibilidade para esclarecer dúvidas, sempre que necessário, é essencial para o aluno e para o seu desempenho.
Carlos Fernandes, Sofia Fernandes.
Esta Unidade Curricular pretende dotar o discente de conhecimentos e competências em ética, segurança e privacidade no âmbito da ciência de dados, bem como de sentido e avaliação de impacto na introdução e utilização de tecnologias avançadas no tratamento de grandes volumes de dados.
CP1. Introdução à Ética. Utilitarismo e deontologia.
CP2. Ética e ciência de dados. Considerações éticas envolvidas no processamento algorítmico de dados sensíveis e no desenvolvimento responsável de Inteligência Artificial.
CP3. Gestão de dados e linhagem de dados. Informação sensível e informação pessoal: como identificar.
CP4. Tecnologias de privacidade. Técnicas básicas de privacidade em ciência de dados. Anonimização e pseudo-anonimização. Privacidade diferencial.
CP5. Estruturas legais e regulatórias relacionadas com a privacidade e segurança de dados.
CP6. Introdução de conceitos gerais de segurança e a sua importância em sistemas de aprendizagem automática
CP7. Tipos de ataques em sistemas de aprendizagem automática
CP8. Abordagens de mitigação, regulamentos e orientações de segurança em sistemas de aprendizagem automática
OA1. Compreender os fundamentos da Ética como filosofia moral e pensar numa deontologia para a ciência de dados.
OA2. Conhecer os protocolos fundamentais na gestão de dados e compreender o conceito de linhagem de dados.
OA3. Identificar informação sensível e informação de identificação pessoal.
OA4. Conhecer técnicas concretas que podem ajudar a proteger a privacidade individual ao trabalhar com conjuntos de dados grandes.
OA5. Conhecer os requisitos legais e regulatórios relacionados à privacidade e segurança de dados.
OA6. Compreender a importância de estabelecer estruturas robustas de gestão de dados dentro das organizações para garantir a conformidade com as regulamentações de privacidade.
OA7. Compreender a necessidade de medidas de segurança específicas para sistemas de aprendizagem automática.
OA8. Compreender os principais tipos de ataques a sistemas de aprendizagem automática e as medidas de prevenção e mitigação dos mesmos.
As aulas são expositivas e presenciais. Os conteúdos são ilustrados com exemplos e estudos detalhados de casos. Aos alunos será pedido que participem activamente através da apresentação de casos ou conceitos, tanto técnicos como teóricos. Os alunos serão encorajados a intervir continuamente nas aulas, nomeadamente após as intervenções formais dos colegas.
Conceição Costa, Miguel Tavares.
A disciplina Interação Humano-Máquina tem por principal objetivo dotar os estudantes de competências metodológicas, de design, de comunicação e de fatores humanos, que lhes permitam desenhar produtos e serviços com as pessoas e para as pessoas. Num mundo cada vez mais digital, a inclusão de todas as pessoas/cidadãos é cada vez mais necessária. A Humanização da Tecnologia é mais do que uma boa experiência do Utilizador. Na prática e, aplicando os conhecimentos teóricos a projetos, os estudantes deverão ser capazes de criar artefactos (em tecnologias de informação) que melhorem a forma como as pessoas trabalham, comunicam e interagem numa sociedade inclusiva.
O que é o Desenho de Interação? Compreender e conceptualizar a interação. O impacto da Teoria da Actividade. Desenhar com a acessibilidade em mente. Princípios para inclusão. Os contributos da psicologia cognitiva no estudo da interação humano-máquina. Perceção humana e funções cognitivas que influenciam o desempenho do utilizador e a satisfação. Desenvolvimento e Avaliação de Protótipos iniciais. Tipos de estudos em user experience, ao longo do ciclo de vida do projeto. Análise crítica aos resultados do estudo para melhorias no protótipo.
Adquirir competências em Desenho de Interação e Desenho Inclusivo.
Compreender como a perceção humana e funções cognitivas influenciam a interação entre o humano e o computador. Compreender que a diferentes interações correspondem diferentes interfaces utilizador.
Compreender o impacto dos públicos heterogéneos e dos fatores culturais no desenho de aplicações
Aprender metodologias de projeto que facilitem o desenho de experiências satisfatórias para o utilizador;
Criar protótipos de alta fidelidade e recolher feed-back junto do Público-Alvo;
Aprender a planear, desenhar e realizar estudos de avaliação da usabilidade ao longo do ciclo de desenvolvimento de software. Saber tratar e analisar dados, bem como apresentar resultados de forma sucinta.
Aplicar as competências adquiridas ao desenvolvimento de sistemas de informação e ao projeto transversal de IHM e Computação Móvel.
As metodologias utilizadas podem ser consideradas de aprendizagem baseada em projetos, e/ou aprendizagem experiencial em que várias competências são adquiridas através de pesquisa/exploração, implementação e análise crítica do que foi alcançado.
Cristiane Ferreira, Alexander Mikovic, Cristina Guerra.
Mecânica clássica, eletrostátíca e corrente contínua.
Compreensão do movimento dos corpos, ou seja, cinemática. Compreender as forças que atuam sobre os corpos e resolver as equações do movimento, ou seja, a dinâmica. Compreender o trabalho e a energia. Entendendo o campo elétrico e o potencial elétrico, ou seja, eletrostática. Compreender as correntes elétricas e resolver circuitos com correntes elétricas contínuas.
Projetos para alunos de fazer um programa de computador para resolver um problema de física.
Na UC de Matemática Discreta pretende-se contribuir para a aquisição de um conjunto de competências nos alunos: capacidade de assimilar informação e de a comunicar; capacidade de expressão escrita; capacidade de expressão oral e capacidade de raciocínio matemático. Para tal, serão estudados conceitos de lógica matemática, teoria de conjuntos e teoria de números.
CP1. Cálculo proposicional e quantificadores
CP2. Provas
CP3. Teoria de conjuntos
CP4. Funções
CP5. Teoria de números
Os objetivos principais desta disciplina são:
OA1. Aplicar propriedades elementares das operações lógicas e de quantificação;
OA2. Construir argumentos matemáticos usando métodos de prova comum;
OA3. Explicar os conceitos básicos sobre conjuntos e funções e realizar operações elementares sobre estes objetos matemáticos;
OA4. Distinguir entre conjuntos numeráveis e conjuntos não numeráveis;
OA5. Entender a teoria dos números;
OA6. Contribuir para a aquisição de um conjunto de competências: capacidade de assimilar informação e de a comunicar; capacidade de expressão escrita; capacidade de expressão oral.
A metodologia de ensino inclui o método expositivo (ME1) para apresentar os conteúdos necessários, o demonstrativo (ME2) para ilustrar a sua aplicação a casos práticos e o ativo (ME3) para resolução de exercícios em sala de aula.
A avaliação de conhecimentos é feita por avaliação contínua ou por prova escrita de exame final.
A avaliação contínua inclui a realização de 3 testes durante as aulas práticas em datas a definir no início do semestre. A aprovação por avaliação contínua obriga à realização de todos os testes. Em caso de não aprovação à disciplina pela avaliação contínua, os alunos poderão ser avaliados através de uma frequência final. Não existe nota mínima em nenhum dos casos.
A nota final do aluno poderá ser bonificada entre 0.5 e 1 valor com a presença e resposta correta a perguntas realizadas durante as aulas teóricas.
Alunos com nota final entre 8 e 9.4, caso pretendam, poderão ser sujeitos a uma prova extra, em condições a definir, para obtenção de aprovação.
André Fonseca, Sofia Fernandes, Sofia Naique.
Esta disciplina abrange os métodos fundamentais de Cálculo associados a funções reais de variável real. É uma área transversal a todas as engenharias e demais cursos de cariz científico. Abrange os métodos clássicos de cálculo diferencial e Integral a uma dimensão.
1. Lógica Matemática
2. Os números reais
3. Funções reais de variável real:
3. Limite:
4. Derivada:
5. Estudo global de uma função:
6. Integração:
Esta disciplina confere a(o) aluna(o) conhecimentos que lhe permitam utilizar, de forma criativa, autónoma, e em contextos diversificados:
OA1: a linguagem simbólica matemática e o raciocínio matemático;
OA2: os conceitos e resultados fundamentais do cálculo diferencial, de modo a que possa proceder ao estudo de uma função real de variável real; OA3: os métodos de primitivação:
OA4: as noções fundamentais do cálculo integral, de modo a que possa calcular integrais simples e determinar áreas de domínios planos.
Maria Silva, Luís Maia, Sofia Fernandes.
Na sequência da Matemática Discreta, a Álgebra Linear é uma disciplina do 2ºsemestre do curso e estuda os espaços vectoriais finitamente gerados.sobre um corpo com comparticular incidência nos corpos primos Z p e o corpo dos reais
O estudo dos espaços vectoriais confere aos estudantes competência para analisar problemas, equacioná-los e definir estratégias diversificadas de resolução.
As aplicações lineares conduzem ao conceito de matriz que aparece como ferramenta de cálculo no estudo dos espaços vectoriais.
O aluno adquire algumas técnicas de cálculo matricial e confere ao conjunto das matrizes finitas a estrutura de espaço vectorial.
O aluno tem a oportunidade de estabelecer um isomorfismo entre espaços vectoriais de matrizes e o espaço vectorial de aplicações lineares o que lhe permitirá selecionar, na resolução de problemas, o espaço onde trabalhar tendo em atenção a especificidade do problema em causa.
1. Estruturas algébricas: grupos comutativos, aneis e corpos. Os corpos Z p, p primo.
2. Espaços vectoriais finitamente gerador. Subespaços vectoriais .
3. Sistemas de vectores equivalentes e dependência linear.
4. Teorema de Steinitz e suas consequências.
5. Aplicações lineares. Isomorfismos
6. Matrizes sobre um corpo. Espaços vectoriais de matrizes .Produto de Matrizes
7. Sistemas de Equações lineares: Estudo e resolução de equações vectoriais lineares. Representação de subespaços vectoriais através de sistemas de equações lineares
8. Determinantes: principais propriedades dos determinantes . Teorema de La Place
9. Valores e vectores próprios.
Conhecer a estrutura de espaço vectorial. Conhecer o conceito de aplicação linear e as suas propriedades. Saber operar em espaços de matrizes. Conhecer a teoria dos determinantes e aplicá-la na resolução de problemas.. Esta unidade curricular confere competências que permitem usar os conhecimentos adquiridos para definir a melhor estratégia na resolução de problemas. O estudante desenvolve competências de raciocínio analógico e dedutivo. Adquire capacidade para lidar com várias caracterizações de um conceito assim como competência para seleccionar a informação mais adequada em cada situação
Por descrever
André Fonseca, Guilherme Antunes, Sofia Naique.
Geométria analítica e calculo diferencial e integral para funções reais de várias variáveis reais.
1. Vectores e geometria do espaço
1.1 Coordenadas cartesianas tridimensionais.
1.2 Vectores, produto escalar.
1.3 Rectas e planos.
1.4 Superfícies cilíndricas e quádricas.
1.5 Noções topologicas
2. Funções vectoriais de variável real
2.1 Funções vectoriais e curvas no espaço.
2.2 Limites e continuidade. Diferenciabilidade, vector tangente a uma curva.
2.3 Integração, comprimento de uma curva.
3. Funções de várias variáveis
3.1 Dominios e curvas de nível.
3.2 Limites e continuidade.
3.3 Derivadas parciais, derivadas de ordem superior.
3.4 Diferenciabilidade, planos tangentes e aproximações polinómiais.
3.5 Derivada direccional, vector gradiente e sua interpretação geométrica.
3.6 Matriz Hessiana, extremos locais e pontos de sela.
4. Integrais múltiplos
4.1 Integrais duplos.
4.2 Coordenadas polares e mudança de variáveis em integrais duplos.
4.3 Integrais triplos.
4.4 Coordenadas cilíndricas e esféricas. Mudança de variáveis em integrais triplos.
Conferir competências nas técnicas e aplicações do cálculo diferencial e integral com funções de várias variáveis. Dominar os conceitos de limite, continuidade e diferenciabilidade de funções. Dominar o cálculo de integrais múltiplos.
Ter capacidade de resolver problemas em contextos diversificados usando os métodos do cálculo diferencial e integral. Conhecer as aplicações a problemas de otimização, de caracterização geométrica de curvas e superfícies e de cálculo de volumes e áreas.
por descrever
Esta unidade curricular dedica-se aos conceitos fundamentais da teoria da probabilidade, estatística e inferência estatística.
1. Estatística Descritiva
Tipos de dados: inteiros, contínuos, categóricos, array, matriz
Tabelas de frequências
Medidas de centralidade e de variabilidade
Visualização (Gráficos de barras, Histogramas, Caixas de Bigodes … )
2. Regressão Linear
Variável independente vs. dependente.
Gráficos de dispersão
Covariância e coeficiente de Pearson
Reta de regressão, resíduo, método dos mínimos quadrados
Cálculo da estimativa para a resposta, dado certo valor para a variável independente
3. Probabilidade
Experiência aleatória. Espaço de resultados. Evento. Operações entre eventos.
Propriedades da função probabilidade. Probabilidade da união de eventos
Lei da probabilidade total
Teorema de Bayes
Probabilidade condicionada. Eventos independentes
4. Inferência Estatística
Amostra e amostra aleatória
Estimador e estimativa para uma proporção
Teste de hipótese para uma proporção
Esta disciplina permite que o(a) aluno(a) seja
OA1: seja exposto à probabilidade como uma função de medida essencial à ciência.
OA2: entenda a estatística como uma área da ciência que permite à engenharia recolher dados, analisar dados, formular hipóteses relativas a esses dados e testar essas hipóteses. Nessa medida, a estatística e a probabilidade são essenciais ao conhecimento e à engenharia.
Nas aulas discutem-se as ideias que fundamentam o programa desta Unidade Curricular (UC), e são analisados múltiplos exemplos e exercícios de aplicação.
Para cada tópico desta UC é apresentado um conjunto de exercícios de aplicação. A(O)s alunas(os) são incentivados a resolver estes exercícios assim como a apresentar quaisquer dúvidas.
Esta UC partilhará conteúdos e material de apoio com outra UC (Introdução à Ciência de Dados)
Todo o material de apoio e informação relevante será partilhada com as(os) alunas(os) através do Moodle.
A avaliação conta com uma componente contínua, que consiste na realização de 3 mini-testes de 20 minutos (cuja média corresponde a 30% da nota final) e um exame (cuja nota corresponde a 70% da nota final). São considerados aprovados os alunos que obtenham nota final não inferior a 10 valores.
Pedro Alves, Brena Lima, Bruno Saraiva, Lucio Studer, Rodrigo Correia, Wellington Oliveira.
Esta é uma disciplina fundamental na formação de qualquer profissional da área de Informática pois introduz os conceitos básicos da programação, sobre os quais assentarão muitas disciplinas subsequentes como Linguagens de Programação I e II, Algoritmia e Estruturas de Dados, Programação Web, Computação Móvel, etc. Mais do que aprender uma linguagem de programação, o aluno aprende a pensar como um programador, analisando problemas e desenhando algoritmos que os resolvam recorrendo a fluxogramas e a programas escritos em Kotlin, uma linguagem promissora que combina as melhores características das linguagens modernas mais populares (Java, Python, etc.)
Dado ser o primeiro contacto de muitos alunos com o tópico da Programação, reveste-se de uma importância especial na aquisição de conhecimentos primordiais mas também na sua motivação. Mais do que aprender a programar, os alunos aprendem a gostar de programar.
O objectivo desta unidade curricular é fornecer aos futuros profissionais na área da informática as bases para que possam iniciar (de um modo disciplinado) a actividade de programação.
O aluno começa por desenvolver a capacidade de raciocínio algorítmico recorrendo a fluxogramas.
O aluno deverá ser capaz de traduzir esses fluxogramas numa linguagem de programação imperativa. Concretamente, o aluno deverá conhecer a sintaxe básica de Kotlin que lhe permitam criar programas simples de linha de comando.
Finalmente, o aluno deve conseguir analisar e avaliar programas feitos por outras pessoas (colegas, professores, etc.).
Pedro Alves, Bruno Cipriano, Duarte Neves, Rodrigo Correia, Wellington Oliveira.
Esta UC surge no 2º semestre do 1º ano, na continuação do trabalho iniciado em Fundamentos de Programação (FP). Em FP, os alunos deram os primeiros passos na programação e preocuparam-se principalmente em produzir programas correctos. Agora, em Algoritmia e Estruturas de Dados, irão continuar a produzir programas correctos mas com preocupações de desempenho, a nível de tempo de execução e consumo de memória.
Esta é uma UC fundamental no currículo de um Engenheiro Informático, que na sua vida profissional encontrará inúmeras situações em que terá que resolver problemas causados por fraco desempenho das aplicações e que exigem um conhecimento sólido dos princípios subjacentes aos principais algoritmos e estruturas de dados.
Não obstante a aprendizagem de conceitos e técnicas de algoritmia e estruturas de dados, os alunos trabalham outras competências fundamentais. Nomeadamente, o espírito crítico e a capacidade de avaliar várias alternativas para resolver os problemas.
O objectivo desta unidade curricular é introduzir os conceitos fundamentais de algoritmos e das estruturas de dados básicas, numa perspetiva de resolver problemas complexos de uma forma eficiente. O aluno deverá ser capaz de analisar e avaliar a eficiência de um algoritmo sem necessidade de o implementar ou testar. Deverá ser igualmente capaz de aplicar a estrutura de dados mais eficaz e eficiente para resolver um determinado problema.
Concretamente, o aluno deverá conseguir criar programas em Java cuja eficiência seja um critério significativo de sucesso (ex: pesquisa, ordenação).
Por descrever
Pedro Serra, Daniel M. Silveira, Thiago Gustavo, Wellington Oliveira.
Esta unidade curricular oferece uma extensa exploração da programação procedural usando a linguagem de programação C, abrangendo tópicos fundamentais e avançados. Os alunos obterão uma compreensão abrangente da história da programação C e dos seus benefícios, bem como aprenderão a criar e executar programas simples em C. O currículo concentra-se em conceitos essenciais, incluindo tipos de dados, variáveis, estruturas de controlo, funções e ponteiros, com oportunidades de experiência prática para reforçar o conhecimento. A unidade curricular também aborda tópicos avançados, como manipulação de ficheiros, alocação dinâmica de memória e estruturas de dados como listas e filas. Através de projetos de programação, os alunos desenvolverão experiência prática, com ênfase particular em obter uma compreensão completa da organização e operação da memória do computador como um recurso. No final do curso, os alunos serão capazes de criar programas eficientes que fazem uso eficaz da memória.
M0: Introdução: Visão geral, programação C, história, benefícios, configuração do ambiente, programa simples
M1: Sintaxe Básica: Definições, tipos de dados, operadores, entrada/saída, estruturas de controlo
M2: Estruturas de controle avançadas: Switch, break/continue, goto
M3: Funções: definição/invocação, argumentos/valores de retorno, recursão
M4: Matrizes e Strings: Definições, vectores de caracteres, strings, funções, matrizes 2D
M5: Ponteiros: Definições, aritmética, pilha/heap, alocação dinâmica de memória
M6: Ponteiros Avançados: Ponteiros para ponteiros/funções
M7: Estruturas e Uniões: Definições, estruturas aninhadas, uniões
M8: Entrada/saída de arquivo: visão geral, abertura/leitura/gravação de ficheiros, entrada/saída binária
M9: Diretivas e Macros do Pré-processador: Definições, #define, #ifdef, #undef, macros com parâmetros
M10: Operadores bit a bit: Definições, operadores bit a bit AND/OR/XOR/NOT/shift
M11: Listas Ligadas: Definições, criação/manipulação, exemplos, pilhas/filas
No final desta Unidade Curricular, os alunos deverão ser capazes de criar programas C eficientes e rápidos, tendo em consideração o uso correto da memória. Deverão adquirir uma compreensão sólida da abstração procedural e ser capazes de analisar e criar algoritmos simples usando essa abordagem. Além disso, os alunos devem entender os princípios por trás dos sistemas "coletores de lixo" em linguagens de alto nível, e da operação de bibliotecas de estruturas de dados. O curso visa fornecer aos alunos conhecimentos necessários para criar programas em C bem projetados, eficientes e robustos e para entender os princípios fundamentais que sustentam a operação das linguagens de programação modernas.
Pandora
Pedro Alves, Bruno Cipriano, Duarte Neves.
Esta UC é o culminar de um caminho iniciado em Fundamentos de Programação e aprofundado em Algoritmia e Estruturas de Dados, solidificando os conhecimentos de programação. Com um foco no desenvolvimento e manutenção de programas de elevada complexidade, o paradigma imperativo deixa de ser suficiente e são abordados os paradigmas orientado a objectos e funcional. São igualmente abordados conceitos adjacentes à fase de implementação, como o controlo de versões, os testes unitários e funcionais, a cobertura de código e outras métricas de qualidade. Esta é uma UC fundamental na formação de qualquer profissional da área de Informática, pois fornece um conjunto de conhecimentos e ferramentas que serão essenciais nos projectos empresariais em que estes alunos virão a estar inseridos.
Esta UC tem como objetivo apresentar uma visão multi-paradigma da programação. São analisados e comparados os 3 paradigmas mais populares: imperativo, orientado a objectos e funcional. Os alunos revêm conceitos da programação imperativa e adquirem conceitos fundamentais da programação orientada a objetos (herança, encapsulamento, polimorfismo, etc.) e da programação funcional (lambdas, funções de 1a ordem, etc.) de forma a que consigam aplicá-los em projetos de desenvolvimento de software complexo usando linguagens de programação modernas multi-paradigma (Java, C#, Python, Kotlin, JavaScript).
Ao longo do semestre, os alunos são consciencializados para a necessidade de redução de custos de manutenção através de melhorias na qualidade do software produzido e aplicação de boas práticas tirando partido das vantagens específicas de cada paradigma. São igualmente expostos a ferramentas essenciais no desenvolvimento moderno de software, como controlo de versões e testes unitários.
Todos estes conceitos são aplicados num projeto de elevada complexidade, multi-paradigma e multi-linguagem que atinge em média as 2500 LOC. O projeto tem que ser desenvolvido em Git e ter uma cobertura elevada de testes unitários. Mais do que as capacidades técnicas, os alunos trabalham a gestão de tempo, o rigor e a resiliência, a capacidade analítica e espírito crítico, a criatividade e o trabalho em equipa.
Lucio Studer, Pedro Perdigão, Rui Santos.
Esta Unidade Curricular pretende dar formação na área da programação Web em geral, e em particular no desenvolvimento de aplicações Web back-end e front-end, providenciando uma visão global do desenvolvimento moderno para a Web. No front-end, são introduzidos conceitos de estruturação, estilização e interação de conteúdos através das linguagens HTML, CSS e JavaScript, in. No back-end, é ensinado o desenvolvimento de aplicações empresariais seguindo o padrão de desenho model-view-control, recorrendo à linguagem Python e a Web framework django. Pretende-se estimular a criatividade e imaginação no desenvolvimento de aplicações inovadoras que sejam eficientes, escaláveis e fáceis de modificar por um lado, e que ofereçam uma boa experiência para o utilizador. Esta é uma UC fundamental para qualquer profissional da área da informática, pois fornece um conjunto de conhecimentos e ferramentas que serão essenciais em projetos empresariais em que virão a estar inseridos.
A Web e seus paradigmas
– Funcionamento da Internet e da Web: arquitetura e protocolos IP e HTTP
– Tecnologias, paradigmas e padrões de desenho da Web
HTML e CSS para desenho de páginas Web
– HTML e seus elementos
– Formulários para envio de dados
– HTML5 e elementos semânticos
– CSS e seus seletores, para estilização de conteúdos
– Propriedades CSS
– Design responsivo e layouts dinâmicos
– Efeitos e animações CSS
– Bootstrap
JavaScript para programação Front-end
– Programação Orientada a Eventos
– Manipulação do DOM
– JSON e APIs
– Single Page Applications
Python para desenvolvimento Web
– Sintaxe, operadores, controlo de fluxos e tipos de dados
– Funções e módulos
– Gestão de ficheiros e pastas
– Classes
Django web framework para Back-end
– Web frameworks
– Arquitetura MVT
– Urls, views e templates
– Linguagem template
– Modelação de base de dados, ORM
– Formulários
– Autenticação
– Implantação na cloud
|
Por descrever
José Cascais Brás, Pedro Perdigão, Rui Santos.
A Engenharia de Software ensina o desenho, escrita de código e testes, e manutenção de programas que têm um propósito de resolver problemas complexos com soluções eficientes e seguras. Todas as unidades curriculares anteriores tem um maior foco na sintaxe e técnicas de programação enquanto nesta unidade curricular os alunos aprendem as técnicas de de desenhar e desenvolver software de uma forma eficiente, legível, modular e escalável.
Esta unidade curricular é essencial para desenvolver as capacidades de desenho e programação que os alunos vão enfrentar no mercado de trabalho.
OA1. Compreender os métodos, técnicas e ferramentas para o completo desenvolvimento de um sistema de software, desde a sua conceção até à sua entrega e manutenção.
OA2. Saber planear, gerir, avaliar e garantir a qualidade do desenvolvimento de projetos de software utilizando os princípios da Engenharia de Software.
A metodologia de ensino inclui o método expositivo (ME1) para apresentar os conteúdos necessários, o demonstrativo (ME2) para ilustrar a sua aplicação a casos práticos e o ativo (ME3) para resolução de exercícios em sala de aula, com e sem recurso ao computador.
A avaliação de conhecimentos é feita por avaliação contínua ou por prova escrita de exame final. A avaliação contínua inclui a realização de dois testes escritos com uma ponderação de 21,25% cada e um de grupo (42,5%) e a participação ativa nas aulas (10%). A assiduidade será um elemento adicional
de avaliação com uma ponderação de 5%.
Ao longo do semestre são disponibilizados Quizes após as aulas (acerca do tópico dado) ou com grupo de perguntas referentes a tópicos da matéria dada como forma dos alunos irem aferindo o seu conhecimento das matérias já lecionadas.
Esta UC é cada vez mais fundamental numa sociedade onde o número de smartphones já ultrapassa largamente o número de computadores e onde se prevê que, num futuro próximo, cada indivíduo se faça acompanhar de um conjunto de dispositivos móveis (smartwatches, smart glasses, sensores, etc.) programáveis, criando a oportunidade para que os engenheiros informáticos possam resolver um vasto conjunto de problemas cuja resolução era até agora impossível ou excessivamente dispendiosa.
A dificuldade está em passar conhecimento que não se esgote no dia em que terminam a UC, dada a velocidade vertiginosa a que evoluem as tecnologias associadas à computação móvel. Nesse sentido, esta UC não pretende apenas ensinar a programar Android mas sim abordar temas intemporais desta área como os vários Modelos de Desenvolvmento, Autonomia, Geo-localização, Conectividade ou Usabilidade.
O objectivo desta unidade curricular é introduzir os conceitos fundamentais da computação móvel. O aluno deverá ser capaz de perceber como tirar o máximo partido das vantagens da computação móvel (localização, sensores, contextual), quando aplicados à resolução de problema concretos. O aluno deverá estar sensibilizado para os constrangimentos típicos de uma aplicação móvel (autonomia, conectividade, usabilidade) e conhecer os mecanismos que permitem ultrapassar esses constrangimentos.
Concretamente, o aluno deverá conhecer os 4 modelos de desenvolvimento de aplicações móveis (Web, Híbrido-Web, Híbrido-Nativo e Nativo) e saber aplicar os conceitos utilizando pelo menos 2 destes modelos – nomeadamente Híbrido-Nativo (Flutter) e Nativo (Android Kotlin).
Por descrever
Rui Ribeiro, Luis A. Gomes, Rui Santos.
Esta Unidade Curricular tem como objetivo uma introdução à computação em nuvem, numa perspectiva de um iniciante que não possui nenhuma experiência anterior com o tópico.
A ideia é ajudar a criar Junior Cloud Architects, o que significa crias as competências para implementar ou adotar a tecnologia Cloud, entender o que é exatamente e quais opções existem quando se pensa em implantações em nuvem.
Esta UC abrange uma ampla variedade de áreas de tópicos de computação em nuvem, fornecendo uma base sólida de entendimento. Esta unidade curricular cria também um ambiente de entendimento da teoria e das formas práticas dos diferentes modelos de serviços de Cloud Computing: Infraestrutura como Serviço (IaaS), Plataforma como Serviço (PaaS) e Software como Serviço (SaaS), fornecendo exemplos e diferenças entre cada .
Aulas teóricas:
Agenda Prática:
Cada trabalho tem um planeamento prático de 6 aulas
Por descrever
A UC pretende complementar os conhecimentos dos alunos na componente de engenharia de software com um foco especial nos processos e na gestão ágil de projetos de engenharia de software.
· Introdução aos complementos de Engenharia de Software: Problemas e aplicações
· Tipologia dos projetos de IT
· Planeamento do âmbito e cronograma dum projeto de engenharia de SW
· Organização dum projeto de engenharia de SW. Papeis, responsabilidades e plano de comunicação e análise de risco.
· Modelos de processo de desenvolvimento de software ágil
· Caso de negócio – projeto de engenharia de SW
· Identificação de estratégias para manutenção de software
· Gestão de portfolio e da procura de projetos de software
· Melhoria do processo de desenvolvimento de software
· Tendências na Engenharia de Software
Utilizar processos de desenvolvimento de software tendo por base o seu modelo de ciclo de vida.
Utilizar métodos, técnicas e ferramentas, já conhecidos e os mais contemporâneos, dentro de um contexto de Engenharia de Software.
Utilizar modelos que permitem especificar, configurar, implementar e manter sistemas de software
Avaliar e garantir a qualidade de um sistema de software
Motivar para o desenvolvimento de programas com uma Engenharia, que integra os aspetos tecnológicos da computação com os fatores sociais e humanos da construção de produtos
A UC utiliza o método expositivo, combinado com a inclusão de casos práticos, e ainda o contacto com entidades da indústria do software por via de apresentações presenciais sobre melhores práticas no desenvolvimento de projetos de software modernos.
Nesta Unidade Curricular (UC), mergulhamos nas bases essenciais da programação aplicada à Ciência de Dados. Aprimoramos habilidades na criação de algoritmos e na construção de estruturas de dados em Python, capacitando para a manipulação (extração, transformação, armazenamento) e análise de dados, o cerne da Ciência de Dados. Estrategicamente situada no primeiro semestre do mestrado, esta UC fomenta habilidades cruciais. Desenvolve a capacidade de abstração, o pensamento lógico e estruturado, além de aprimorar a mestria algorítmica. Mais do que isso, estimula o pensamento criativo e a habilidade de resolver problemas – competências fundamentais na formação de um cientista de dados. Estas bases sólidas constituem alicerces essenciais, preparando os estudantes para módulos mais avançados do mestrado
Os Conteúdos Programáticos (CP) desta unidade curricular são os seguintes:
CP1. Introdução à programação
CP2. Introdução à linguagem Python e sua sintaxe
CP3. Intordução aos ambientes de trabalho Jupyter Notebook, Google Collab e Moodle CodeRunner.
CP4. Sintaxe do Python. Variáveis e operadores. Tipos de dados simples: numéricos; strings e seus métodos.
CP5: Controlo de fluxo, com decisores e ciclos.
CP6. Funções. Módulos e packages.
CP7: Tipos de dados compostos: listas, tuplos, sets e dicionários
CP8: Manipulação e gestão de ficheiros (texto, JSON, CSV).
CP9: Visualização de dados com matplotlib.
CP10: Programação funcional. Compreensões, lambda, map, filter, reduce.
CP11: Programação orientada a objetos. Classes.
Esta Unidade Curricular tem os seguintes Objetivos de Aprendizagem (OA):
OA1. Conhecimentos Fundamentais em Programação:
OA2. Aptidões para Resolução de Problemas:
OA3. Competências em Manipulação de Dados:
OA4. Preparação para Módulos Avançados:
M1: Ensino expositivo: A apresentação de conceitos teóricos é feita de forma expositiva através de slides. Disponibilizam-se num canal Educast da FCCN video-tutoriais curtos desenvolvidos sobre os conceitos chave da disciplina.
M2: Ensino ativo: os conceitos teóricos são demonstrados recorrendo a "live coding" pelo docente.
M3: Aprendizagem experimental: São usadas fichas em Jupyter Notebook que permitem a experimentação imediata dos conceitos lecionados.
M4: Aprendizagem participativa: Durante as aulas é estimulada a discussão em grupo dos exercícios e projetos semanais.
M5: Auto-avaliação: foi desenvolvida uma plataforma que permite realizar quizzes para avaliação de todos os conhecimentos, cuja solução submetida é validada de forma automática.
M6: Aprendizagem orientada a projeto: são realizados de forma autónoma exercícios e projetos semanais com desafios exploratórios de aspectos complementares.
M7: Avaliação contínua: fichas semanais, quizzes, projetos, minitestes e frequencias.
É uma disciplina obrigatoria para alunos do ramo de telecomunicações do curso. È a disciplina onde os alunos se cruzam pela primeira vez com os conceitos fundamentais de comunicação analogica and digital.
1.Introdução.Modelo de um sistema de Telecomunicações.2. Sinais (revisão).Introdução aos processos estocásticos.Caracterização.Modelos de ruído.3.Modulação analógica de portadoras sinusoidais.AM e FM. Sinais e ruído passa-banda.Desempenho face ao ruído.4.Digitalização de fontes analógicas – sistemas PCM.Amostragem e Quantização.Erro e ruído de quantização.5.Modelo de uma fonte digital. Medida de informação e entropia. Introdução ao problema da codificação de fonte. Codificação de Huffman.
O principal objectivo da disciplina é o de transmitir aos alunos os conceitos base de telecomunicações bem como introduzir as principais ferramentas matemáticas e computacionais para o seu tratamento. Pretende-se:
– Introduzir os fundamentos de modulações analógicas, modulação por pulsos e codificação de fonte. Desta forma, o aluno ficará capacitado a compreender, desenvolver e projectar sistemas analógicos de telecomunicações.
– Desenvolver uma compreensão abrangente dos conceitos de telecomunicações, que permitam, ao aluno, a intervenção em sistemas de áreas distintas, mas regidos pelos mesmos princípios matemáticos fundamentais.
– Adquirir a capacidade de analisar e manipular sinais e sistemas lineares e invariantes no tempo através das suas representações no domínio do tempo, frequência, e da transformada de Fourier. Estas competências são fundamentais, para o projecto e desenvolvimento de algoritmos de compressão e codificação de dados (e.g., áudio, vídeo, texto, etc.).
Fornecimento de diverso material de estudo em suporte digital, como slides e exercícios. Recurso a software de simulação.
É uma disciplina obrigatoria, de base da engenharia. As noções de sinais e de sistemas são comuns a
uma grande variedade de áreas científicas. Os métodos e as técnicas que lhes estão associados
desempenham um papel importante em áreas tão diversas da ciência e da tecnologia tais como Redes
de Comunicações, Projecto de Circuitos, Controlo, Sistemas de Geração e de Distribuição de Energia,
Controlo de Processos Químicos, Acústica, Sismologia, etc. Embora provenientes de disciplinas de
índole tão diversa, e correspondendo a fenómenos físicos de natureza completamente diferente, ao
estudo dos sinais e dos sistemas está associado o desenvolvimento de um formalismo básico comum.
1. Sinais e sistemas;
2. Sistemas Lineares e Invariantes no Tempo (SLITs);
3. ransformada de Z;
4. Transformada de Fourier Discreta;
5. Resposta no Tempo de SLITs Causais;
6. Equações às diferenças;
Pretende-se:
– Introduzir os fundamentos da Teoria dos Sinais e dos Sistemas Lineares e Invariantes no Tempo.
Desta forma, o aluno ficará capacitado a compreender, desenvolver e projectar sistemas de controlo,
que podem ser aplicados a diversas áreas da engenharia.
– Desenvolver uma compreensão abrangente dos conceitos de sinais e sistemas, que permitam, ao
aluno, a intervenção em sistemas de áreas distintas, mas regidos pelos mesmos princípios matemáticos
fundamentais.
– Adquirir a capacidade de analisar e manipular sinais e sistemas lineares e invariantes no tempo através
das suas representações no domínio do tempo, frequência, e das transformadas de Z e de Fourier
Discretas. Estas competências são fundamentais, para o projecto e desenvolvimento de algoritmos de
compressão e codificação de dados (e.g., áudio, vídeo, texto, etc.)
Ensino teórico (T) – Apresentação dos conceitos definidos nos conteúdos programáticos.
Ensino prático (P) – Apresentação e discussão dos conceitos definidos nos conteúdos programáticos e
acompanhados da resolução de exemplos de aplicação.
Orientação tutorial (OT) Acompanhamento dos alunos na resolução de exercícios e supervisão de outras
actividades relevantes à unidade curricular. Apoio ao estudo de pequenos grupos de alunos.
Avaliação contínua:
– Duas provas escritas (PE1,PE2) individuais: PE = 0.5 * PE1+ 0.5 * PE2 , PE >= 10
– Trabalho prático (TP), TP >= 10
NOTA FINAL = 0.7 * PE + 0.3 * TP >= 10
Avaliação por exame de recurso:
– Prova escrita individual (PE), PE >= 10
– Trabalho laboratorial (TP), TP >= 10
NOTA FINAL = 0.7 * PE + 0.3 * TP >= 10
João Craveiro, Brena Lima, Houda Harkat.
Esta UC em Redes de Computadores faz um curso introdutório à rede de computadores Internet. Tem como objectivo apresentar todas as camadas de que é constituida a Internet (Inter-Networks), i.e. Camada de Aplicação, Camada de Transporte, Camada de Rede e Camada de Ligação/Fisica.
A abordagem ao Conteudos Programáticos é feita de uma forma Top-Down, i.e. começando com uma introdução de todas a camadas seguida por cada uma em detalhe começando pela camada de Aplicação.
Existe uma componente prática nesta UC, do qual são demostrados e treinados os conceitos introduzidos na componente teórica.
Esta Unidade Curricular complementa e integra-se assim, ao presente ciclo de estudos oferecendo uma componente disciplinar de Redes de Computadores e sua evoluc¿a¿o.
CP1: Introdução
CP2: Camada de Aplicação
CP3: Camada de Transporte
CP4: Camada de Rede
CP5: Camada Data Link
OA1: Saber que o que é uma rede a nível geral. E que a Internet é uma rede de redes ou inter-network. Gerir uma rede de redes que partilha dados sem gestão centralizada envolve em termos de gestão e de operação vários desafios.
OA2: Adquirir conhecimentos teóricos e práticos dos diversos protocolos envolvidos em cada camada (layer) de operação. Na Camada de Aplicação, tais como HTTP 1.0 e 1.1, DNS, etc. Na camada de Transporte, protocolos como o UDP e TCP e suas variantes. Na camada de Rede o protocolo IP, etc. E na camada de data link, saber o que é uma comutação por circuitos e por pacotes.
OA3: Ganhar a aptidão teórica e prática de uma comunicação Cliente-Servidor.
Por descrever
Esta Unidade Curricular (UC) apresenta-se como um complemento à UC Redes de Computadores.
Enquanto na última são abordadas as camadas de rede, transporte e aplicação, na presente UC de Complementos de Redes discutem-se os fundamentos das redes de comunicação, e as camadas física e de ligação.
São abordados aspetos fundamentais associados ao desenho e dimensionamento de redes de comunicações, nos mais variados meios de transmissão e tipos de ligação.
São estudadas também várias métricas de avaliação de desempenho, com o intuito de ganhar sensibilidade quantitativa e qualitativa.
CP.3.Redes de comunicações
CP.4.Camada física
CP.5.Camada de ligação
Pretende-se com esta UC que o aluno compreenda os conceitos fundamentais das redes de comunicação e seja capaz de identificar os problemas que resolvem. Para um conjunto de requisitos e um cenário específico, deverá saber identificar e avaliar comparativamente as diferentes estratégias de desenho e dimensionamento das componentes física e de ligação de uma rede, aplicando métricas adequadas para avaliação de desempenho destas, que levem à escolha da solução ótima que mais se adequa ao contexto.
A UC é teórico-prática.
As aulas teóricas seguem o programa definido, apresentando os conceitos teóricos suportados por exemplos práticos.
Nas aulas práticas procede-se à resolução de exercícios sobre a matéria lecionada. De forma complementar, nas primeiras aulas práticas é ministrada uma tutoria de Python e Django, cada aluno construindo uma aplicação Web base.
Ao longo do semestre, serão dadas fichas de exercícios semanais sobre a matéria lecionada será igualmente desenvolvido ao longo do semestre um projeto, aplicação web em django.
O âmbito desta unidade prende-se com o estudo e projecto de infra-estruturas de telecomunicações em
edifícios, devidamente enquadradas no contexto normativo a ser respeitado em Portugal, a norma ITED
3, que espelha a legislação europeia actualmente em vigor. A componente de gestão de projectos,
fundamental em qualquer área de aplicação da engenharia, é introduzida com base na metodologia do
PMI, sendo abordadas as ferramentas fundamentais, necessárias à gestão de projecto e tomada de
decisão. A pertinência da unidade no ciclo de estudos, é clara: (i) O projecto e instalação de redes de
telecomunicações em edifícios, implica o cumprimento de normas específicas, de qualidade e fiabilidade,
constituindo uma mais valia fundamental para o mercado de trabalho na área das telecomunicações; (ii)
Os conceitos fundamentais de gestão de projectos, e tomada de decisão, são hoje uma ferramenta
essencial, aplicada de forma transversal, em todas as áreas da engenharia.
Programa das Aulas Teóricas
Programa das Aulas Práticas
Pretende-se que o aluno adquira a capacidade técnica para, de forma autónoma, projectar uma
infraestrutura de telecomunicações num edifício, recorrendo às normas em vigor (ITED3). No âmbito
desta unidade curricular exigir-se-á ainda ao aluno que seja capaz de planificar e gerir o seu trabalho
utilizando técnicas básicas de gestão de projectos. Em suma, pretende-se que o aluno adquira fortes
capacidades de responder aos desafios colocados pelo mercado de trabalho, nas áreas da informática
aplicada às telecomunicações, nomeadamente no âmbito de projecto e instalação de infraestruturas de
telecomunicações e redes informáticas. As competências fundamentais a desenvolver ao longo da
unidade são:
1. Familiarização com os materiais e componentes utilizados nas redes ITED;
2. Familiarização com as regras de projecto, dimensionamento e instalação das redes ITED;
3. Familiarização com a utilização ferramentas CAD;
3. Familiarização com os conceitos fundamentais de gestão de projectos;
Fornecimento de diverso material de estudo em suporte digital, como slides e exercícios. Recurso a software de simulação.
A presente unidade curricular tem por objectivo formar estudantes com perfis profissionais especializados, capazes de lidar eficazmente com a complexidade crescente das ameaças à segurança das aplicações em rede e na nuvem, utilizando as mais avançadas tecnologias da segurança informática, para implementar elevados padrões de segurança em redes informáticas
¿Introdução à Segurança Informática ¿Conceitos fundamentais de Segurança Informática ¿Paradigmas de Segurança ¿Criptografia ¿Algoritmos de segurança ¿Autenticação e autorização ¿Gestão de chaves ¿Segurança de Redes ¿Firewalls ¿IDS/IPS ¿Redes sem fios ¿Arquitecturas de Segurança ¿Protocolos de comunicação segura ¿Tipificação de vulnerabilidades e ataques ¿Segurança de Software ¿Políticas e gestão de segurança
No final da cadeira, os estudantes deverão: Identificar os diferentes domínios e aplicações da segurança informática. Perceber e utilizar os principais algoritmos de encriptação, assim como quantificar os níveis de segurança que permitem assegurar. Conhecer e perceber as actuais ameaças à segurança em redes de dados e as boas práticas necessárias para as evitar. Conceber e implementar aplicações em rede obedecendo a elevados requisitos de segurança mesmo utilizando canais de comunicação inseguros Utilizar os conceitos adquiridos em cenários reais, no contexto do projecto / estágio profissional a realizar no ano lectivo.
Por descrever
Rui Ribeiro, João Caldeira, Luis A. Gomes.
Esta unidade curricular tem por objetivo apresentar a importância da Gestão de Dados no seio de uma empresa, de forma a garantir quer a operação diária de negócio, bem como o apoio à decisão estratégica.
Nesta unidade reforçar-se-á o enquadramento de estruturação e metodologias de criação das bases de dados.
O programa da unidade curricular é:
A) Componente Teórico
B) Componente Prática
São objetivos dotar os estudantes dos conhecimentos teóricos e práticos necessários à concepção, construção e análise de bases de dados relacionais: nomeadamente obter as seguintes aptidões e
competências:
1. Compreender as razões de implementação de bases de dados relacionais no mundo empresarial
2. Transpor de uma análise de requisitos para um modelo entidade-associação para desenhar bases de dados;
3. Aplicar os conceitos do modelo relacional de bases de dados, transformando o modelo entidade-associação, em modelo físico de dados;
4. Aplicar as técnicas de normalização de tabelas;
5. Compreender arquitetura e principais componentes de Sistemas de Gestão de Bases de Dados;
6. Utilizar a linguagem SQL base e avançado para a criação, consulta e modificação de bases de dados;
Uso de dinâmicas interativas de jogos em aulas, através de plataformas como o Kahoot.
Rui Ribeiro, José Cascais Brás, Luis A. Gomes.
A UC de Análise e Conceção de Sistemas tem por objetivo garantir um enquadramento de gestão de Sistemas de Informação e o seu impacto na componente aplicacional, onde a componente de metodologia e engenharia de requisitos, tal como a metodologia e estruturação de testes de software, sejam unitários ou agregados, são essenciais para o sucesso de negócio das empresas.
Estrutura de Capítulos principais de conteúdos
Visão de Gerenciamento de Sistemas de Informação
Engenharia de Requisitos (Gestão de backlog, BPMN e UML – Modelação)
Testes de software
Gestão de Projetos
Por descrever
Esta unidade curricular pretende dar uma introdução em Tópicos de Data Warehouse e sua evolução até ao presente.
Esta UC tem como âmbito introduzir as motivações da necessidade do Data Warehouse na sua perspectiva originária e funcional e com o advento do big-data quais os desafios que o Data Warehouse tem enfrentado para sua evolução e propósito.
Esta disciplina vem dar não só uma introdução a tópicos de Data Warehouse mas também a introdução de novos paradimas e soluções que complementam dos dias actuais (big-data) a função e objectivos de uma data warehouse. Introduzindo-se assim outros temas tais como o Data Vaults, Data Lakes e tecnologias tais como Hadoop com Map Reduce (storage and recall) e outros tais como Spark (memory based).
Esta Unidade Curricular complementa e integra-se assim, ao presente ciclo de estudos oferecendo uma componente disciplinar de data warehouse e sua evolução.
CP1: Sistemas Operacionais, dados operacionais e OLTP (OnLine Transactional Processing) e a necessidade de Informação estratégica.
CP2: Informação Estratégica e a necessidade de um novo sistema, data warehouse. Requisitos a ter uma data warehouse e suas componentes. O porquê e a incapacidade dos sistemas operacionais OLTP para manipular Informação Estratégica.
CP3: Data Warehouses como solução para armazenamento, gestão e manipulação de informação estratégica e principais diferenças com sistemas operacionais.
CP4: Introdução aos vários estágios da data warehouse: Data (e.g. OLTP) – Extract Transform Load – Data storage – Data Analytics (BI, Data Science e Hadoc Reporting) e Gestão da data warehouse.
CP5: Arquitectura da Data Warehouse. Os vários tipos de arquitecturas para uma data warehouse (Top-down e Botton-up e outras).
CP6: Sistemas OLAP, hyper-Cubos e operações em Cubos.
CP7: Para além das Data Warehouses: Big data, Data Vaults, Data Lakes sistemas Hadoop/Map Reduce e Spark.
OA1: Sistemas Operacionais, dados operacionais e OLTP (OnLine Transactional Processing) e a necessidade de Informação estratégica.
OA2: Informação Estratégica e a necessidade de um novo sistema, data warehouse. Requisitos a ter uma data warehouse e suas componentes. O porquê e a incapacidade dos sistemas operacionais OLTP para manipular Informação Estratégica.
OA3: Data Warehouses como solução para armazenamento, gestão e manipulação de informação estratégica e principais diferenças com sistemas operacionais.
OA4: Introdução aos vários estágios da data warehouse: Data (e.g. OLTP) – Extract Transform Load – Data storage – Data Analytics (BI, Data Science e Hadoc Reporting) e Gestão da data warehouse.
OA5: Arquitectura da Data Warehouse. Os vários tipos de arquitecturas para uma data warehouse (Top-down e Botton-up e outras).
OA6: Sistemas OLAP, hyper-Cubos e operações em Cubos.
OA7: Para além das Data Warehouses: Big data, Data Vaults, Data Lakes sistemas Hadoop/Map Reduce e Spark.
A disciplina tem uma forte componente prática onde os estudantes têm que aplicar os conhecimentos e obter resultados visíveis.
Disciplina de gestão de uma organização informática, focando numa perspetiva prática os aspetos mais importantes da gestão de equipas e organizações informáticas.
1. Introdução – Âmbito da Gestão de Sistemas e Tecnologias de Informação
2. Caracterização das Tecnologias e Sistemas de Informação Empresariais
– Estrutura organizativa de uma organização informática
– Aplicações e tecnologias
– Infraestruturas
3. Gestão Operacional
– Organização e responsabilidades das equipas
– Gestão financeira de projectos, portfólios e equipas
– KPIs de gestão operacional
– Produtividade e function points
– Gestão Lean de equipas
4. Gestão Transversal
– Gestão da Procura e da Relação
– Gestão do Portfólio
– Arquitectura
– Risco
– Gestão de compras e fornecedores
– Processos e Qualidade
– Recursos humanos
5. Gestão Global
– Plano estratégico
– Orçamento anual e controlo orçamental
– KPIs e alinhamento organizacional
Aprendizagem das matérias e das práticas relevantes na gestão de uma organização informática. Os alunos devem ficar capacitados a entender as responsabilidades, desafios, práticas e competências de uma organização informática, desde as equipas, à gestão intermédia e até ao Director de Informática. Este conhecimento permite aos alunos uma compreensão global da organização informática onde trabalham ou podem vir a trabalhar, ou das empresas suas clientes, melhorando a sua capacidade de integração no mercado de trabalho e de progressão na carreira informática
Semanalmente os alunos são confrontados com problemas que têm que investigar e apresentar um trabalho que é discutido na aula seguinte.
Departamento de Engenharia Informática e Sistemas de Informação
Edifício F, sala F.1.3
Direção — 217 515 500 (ext: 683)
Serviço de Apoio Tecnico-Admistrativo (SATA) — 17 515 500 (ext: 764)
Gestão de conteúdos por Lucio Studer Ferreira © 2022 COFAC.