Engenharia Informática

O curso de licenciatura em Engenharia Informática da Universidade Lusófona forma licenciados capazes de assumir posições de destaque em projetos de engenharia informática ou equipas de desenvolvimento e consultadoria, na área da engenharia dos sistemas de informação, assumindo pela sua formação e atitude papéis relevantes na geração de inovação e riqueza. Nesse sentido, os estudantes obtêm as competências adequadas à conceção, realização e manutenção de sistemas informáticos, programação de aplicações e de sistemas, desenho arquiteturas de computação e comunicações, gestão de sistemas de informação e de conhecimento, assim como à compreensão e resolução dos problemas associados.

Objetivos do curso

Os objetivos desta licenciatura são os seguintes:
1. Fornecer um perfil profissional reconhecido no mercado, com fortes competências em Tecnologias de Informação e Comunicação, garantindo um elevado grau de empregabilidade e a possibilidade de prosseguir estudos de 2º ciclo com excelentes perspectivas de sucesso.
2. Garantir um ensino de excelência assente num corpo docente de qualidade, integrando especialistas e doutorados com elevado potencial pedagógico e actividade comprovada em investigação.
3. Dar acesso a estágios e formação em ambiente empresarial no decorrer do percurso académico, em colaboração com empresas líderes de mercado, potenciando níveis de qualificação profissional elevados antes da conclusão do curso.
4. Garantir a realização de Trabalhos Finais de Curso inseridos em projectos inovadores, pelo facto dos muitos dos seus docentes estarem agregados a Centros de Investigação reconhecidos, participar em projectos de I&D e desenvolver parcerias com o meio empresarial.
5. Desenvolver o espírito empreendedor dos alunos, através do Centro de Incubação de Empresas PLAY que apoia ideias de jovens empreendedores, pote

Plano de Estudos

Explore os conteúdos e projetos das unidades curriculares

  • 1.º Ano

    1.º Semestre
    • Fundamentos de Física

      Apresentação

      Mecânica clássica, eletrostátíca e corrente contínua.

      DocentesCristiane FerreiraAlexander MikovicCristina Guerra

      Projetos

      • Lançamento do Projétil

        Descrição
        • O programa pede a altura, a velocidade inicial e o ângulo.
        • Temos o output de um gráfico do trajeto do projétil consoante os inputs inseridos
        • Podemos repetir o programa o quanto desejarmos.

        Conceitos aplicados da Unidade Curricular
        • Referencial, posição e trajetória.
        • Movimento no espaço. Projéteis
        • Programação em Kotlin: leitura do teclado, escrita no ecrã.
        Tecnologias usadas
        • Kotlin

      Programa

      1. Grandezas físicas, dimensões e sistemas de unidades.
      2. Referencial, posição e trajetória. Movimento unidimensional.
      3. Movimento no espaço. Projéteis e movimento circular.
      4. Leis de Newton. Tipos de forças, força gravitacional.
      5. Aplicações de Leis de Newton: plano inclinado, rodelas, mola oscilatória, pendulo.
      6. Trabalho. Forças conservativas e energia potencial.
      7. Conservação da energia mecânica.
      8. Centro de massa, impulso e momento linear. Colisões.
      9. Momento de uma força, momento de inércia e momento angular.
      10. Lei de Coulomb, campo elétrico.
      11. Potencial elétrico e capacitores.
      12. Corrente elétrica e resistência elétrica.
      13. Circuitos elétricos. Leis de Kirchhoff.
    • Fundamentos de Programação

      Apresentação

      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.

      DocentesPedro AlvesBrena LimaBruno SaraivaLucio StuderRodrigo CorreiaWellington Oliveira

      Projetos

      • Jogo das Tendas

        Descrição
        • Desenvolver uma grelha 2D que simule o terreno do jogo, com árvores distribuídas aleatoriamente. Permitir que o jogador coloque tendas junto às árvores, assegurando que cada tenda esteja ligada apenas a uma árvore.
        • Implementar regras para assegurar que as tendas não se toquem, nem mesmo na diagonal, e criar uma interface de linha de comando para a interação do jogador com o jogo.

        Conceitos aplicados da Unidade Curricular
        • Programação em Kotlin: ciclos, funções, arrays, arrays2D, leitura do teclado, escrita no ecrã.
        Tecnologias usadas
        • Kotlin
        • IntelliJ
      • Batalha Naval

        Descrição
        • Desenvolver uma grelha 2D que simule a arena do jogo, com navios e marcadores de jogadas anteriores.
        • Criar uma interface de linha de comando para a interação do jogador com o jogo.

        Conceitos aplicados da Unidade Curricular
        • Programação em Kotlin: ciclos, funções, arrays, arrays2D, leitura do teclado, escrita no ecrã.
        Tecnologias usadas
        • Kotlin
        • IntelliJ

      Programa

      • Introdução à programação
      • Algoritmos, fluxogramas, pseudo-código
      • Sintaxe e semântica das linguagens
      • Elementos da sintaxe, estrutura de um programa
      • Declarações e atribuições
      • Tipos primitivos
      • Expressões aritméticas, expressões lógicas
      • Entradas e saídas de dados
      • Selecção
      • Repetição
      • Funções
      • Arrays uni-dimensionais e bi-dimensionais
      • Tratamento de erros
      • Leitura e escrita de ficheiros
      • Boas práticas de programação imperativa
    • Matemática Discreta

      Apresentação

      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.

      DocentesMaria SilvaHouda Harkat

      Programa

      CP1. Cálculo proposicional e quantificadores

      CP2. Provas

      CP3. Teoria de conjuntos

      CP4. Funções

      CP5. Teoria de números

    • Matemática I

      Apresentação

      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. 

      DocentesAndré FonsecaSofia FernandesSofia Naique

      Programa

      1. Lógica Matemática

      • Designação e proposição. Valor lógico de uma proposição.  Conjunção e disjunção de proposições. Conjunto, interseção e união de conjuntos.

      2. Os números reais

      • Números racionais e irracionais. Ordem e valor absoluto.

      3. Funções reais de variável real:

      • Generalidades sobre funções. Funções polinomiais e racionais. Funções trigonométricas. Função exponencial e logarítmica.

      3. Limite:

      • Definição e propriedades de limites de uma função. Continuidade de funções.

      4. Derivada: 

      • Interpretação geométrica. Regras de derivação. Derivadas de ordem superior.

      5. Estudo global de uma função:

      • Monotonia e extremos relativos. Concavidade e pontos de inflexão. Assíntotas. Gráficos.

      6. Integração:

      • Primitiva imediata. Primitivação por substituição e por partes. Integral definido, teorema fundamental do cálculo.  Aplicações da integração (áreas de figuras planas).
    • Sistemas Digitais

      Apresentação

      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.

      DocentesJoão P. CarvalhoCarlos FernandesDaniel FernandesSérgio Ferreira

      Programa

      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%)

    2.º Semestre
    • Álgebra Linear

      Apresentação

      Nesta unidade curricular, os estudantes irão aprender a trabalhar com matrizes, sistemas de equações lineares e espaços vetoriais reais, essenciais para a resolução de diversos problemas reais.

       

      DocentesMaria Silva, Luís Maia, Sofia Fernandes

      Programa

      CP1. Matrizes

      CP2. Sistemas de equações lineares

      CP3. Transformações lineares

      CP4. Espaços vetoriais

      CP5. Determinantes

      CP6. Valores e vetores próprios de matrizes

       

    • Algoritmia e Estruturas de Dados

      Apresentação

      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.  

      DocentesPedro AlvesBruno CiprianoDuarte NevesRodrigo CorreiaWellington Oliveira

      Projetos

      • Rock in DEISI

        Descrição
        • Desenvolver uma aplicação de linhas de comando em Java que permite realizar queries relativamente sofisticadas sobre uma base de dados real contendo informações sobre músicas e artistas dos últimos 100 anos, obtidas de repositórios públicos.
        • A base de dados é representada em ficheiros CSV e os alunos devem implementar estruturas de dados em memória para responder às queries eficientemente.

        Conceitos aplicados da Unidade Curricular
        • Algoritmos de ordenação e pesquisa
        • Estruturas de dados otimizadas para pesquisa como árvores e hashtables
        • Deteção de bottlenecks
        • Utilização de otimizações não-algorítmicas como buffering
        Tecnologias usadas
        • Java
        • ntelliJ
        • JUnit
        • ChatGPT

      Programa

      • funções recursivas, algoritmos recursivos
      • tipos de dados complexos
      • eficiência e optimização (algorítmica e não-algorítmica)
      • complexidade de algoritmos
      • algoritmos de pesquisa
      • algoritmos de ordenação – bubble sort, selection sort, merge sort, quick sort
      • tipos de dados abstractos – pilhas e filas
      • listas ligadas
      • árvores binárias, árvores ordenadas, árvores AVL
      • hashtables
    • Arquitetura de Computadores

      Apresentação

      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.

      DocentesDaniel FernandesPaulo GuedesRicardo SantosSérgio Ferreira

      Programa

      Aulas Teóricas

      1. Circuitos digitais MSI: Portas Lógicas, registos, contadores, memórias, multiplexers e descodificadores. Simulação.
      2. Arquitetura de um Microprocessador (CPU) genérico.
        1. Componentes básicos: ALU, Registos e Barramentos.
        2. Instruções e Microinstruções
        3. Memórias de Programa e Dados.
        4. Fluxo de informação num CPU: Operações Fetch e Execution
      3. Estudo de um Microcontrolador comercial de baixo custo.
      4. Ambiente de desenvolvimento, programação, simulação e teste.

      Aulas Práticas

      1. Componentes digitais típicos
      2. Simulação de componentes básicos da arquitetura interna de um CPU genérico
      3. Projeto simples com um microcontrolador comercial económico
    • Competências Comportamentais

      Apresentação

      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.

      DocentesDiogo MoraisTomáz Saraiva

      Projetos

      • IT in competences development

        Descrição
        • Desenvolvimento de competências via projetos tecnológicos (apps, jogos, websites), incluindo análise de mercado e estratégias de monetização.
        • Apresentação de 10 minutos para captação de investimento, seguida de avaliação pelos pares.

        Conceitos aplicados da Unidade Curricular
        • Critical Thinking, apresentações públicas, personal marketing e desenvolvimento de competências.
        Tecnologias usadas
        • Diversas. Ficou ao critério dos alunos a definição dos pressupostos técnicos, não havendo limitações

      Programa

      Marketing Pessoal:

      1. CV;
      2. Portefólio;
      3. Apresentação pessoal e contextos de entrevista;
      4. Apresentação em público e ferramentas de suporte;
      5. Redes sociais e Networking;
      6. Factos Vs Opiniões;
      7. Gestão de tempo:
        1. Trabalho remoto e comunicação mediada;
        2. Work-life balance.
      8. As tecnologias no trabalho: oportunidades e ameaças:
      9. Trabalho em equipa;
      10. Comunicação;
      11. Personal and Social Skills development;
      12. Percursos de carreira;
      13. Critical thinking and problem solving.
    • Linguagens de Programação I

      Apresentação

      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.

      DocentesPedro AlvesBruno CiprianoDuarte Neves

      Projetos

      • DEISI Chess

        Descrição
        • Criação um jogo de Xadrez!
        • Na primeira parte deste projeto os alunos são desafiados a criar a lógica por trás deste jogo, sendo que vão começar apenas a jogar com Reis.
        • Na segunda parte vão ser incorporadas as outras peças de maneira a completar este jogo.

        Conceitos aplicados da Unidade Curricular
        • diagramas UML
        • programação orientada a objetos de acordo com o teorema do encapsulamento
        Tecnologias usadas
        • linguagens de programação Java e de Kotlin
        • testes em JUnit 5
        • criação de um repositório Git no GitHub
      • DEISI Jungle

        Descrição
        • Desenvolver em Java uma aplicação gráfica (desktop) para um jogo de tabuleiro com animais, que envolve estratégia e movimentação baseada em características animais e alimentares
        • O jogo suporta até 4 jogadores, cada um iniciando com um animal diferente, e inclui elementos como alimentação e energia, influenciando a dinâmica do jogo.

        Conceitos aplicados da Unidade Curricular
        • Utilização correta de conceitos de programação orientada a objetos como encapsulamento, herança e polimorfismo.
        • Boas práticas de código e design de software, com expectativa de mais de 3000 linhas de código.
        • Planeamento com UML antes da codificação e uso intensivo de testes unitários em JUnit para garantir qualidade.
        Tecnologias usadas
        • Java e Kotlin (os alunos misturaram as duas linguagens no projeto)
        • IntelliJ
        • Git/GitHub
        • JUnit

      Programa

      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

    • Matemática II

      Apresentação

      Geométria analítica e calculo diferencial e integral para funções reais de várias variáveis reais.

      DocentesAndré FonsecaGuilherme AntunesSofia Naique

      Programa

      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.

  • 2.º Ano

    1.º Semestre
    • Arquiteturas Avançadas de Computadores

      Apresentação

      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.

      DocentesPedro SerraDaniel FernandesWellington Oliveira

      Projetos

      • Controlo e Gestão de Ginásio

        Descrição
        • Criação de um sistema automatizado com arduinos
        • Há liberdade de escolha do propósito do projeto

        Conceitos aplicados da Unidade Curricular
        • Montagem de circuitos eletrónicos com múltiplos sensores
        • Programação em C++
        Tecnologias usadas
        • Simulação no Thinkercad
        • Arduino Uno R3, ou outro modelo
        • Arduino IDE
      • Casa Inteligente

        Descrição
        • No âmbito da disciplina de arquitetura avançada de computadores decidimos como projeto final criar uma casa inteligente. O objetivo principal era criar um casa para um dia a dia mais pratico e facil.
        • Na nossa casa contamos com um sistema de segurança com fechadura com um código e um sistema de alarme por movimento. Iluminação interior e exterior com sensores para uma eficiência energética melhor. Um sistema de ar condicionado com um display que disponibiliza a temperatura ambiente da casa bem como o estado de funcionamento do ar condicionado. Contamos tambem com uma persiana automática e uma campainha.

        Conceitos aplicados da Unidade Curricular
        • Arduino
        • Programação em C
        Tecnologias usadas
        • C
        • Arduino IDE
        • Thinkercad

      Programa

      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

    • Bases de Dados

      Apresentação

      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.

      DocentesRui RibeiroJoão CaldeiraLuis A. Gomes

      Programa

      O programa da unidade curricular é:
      A) Componente Teórico

      • Introdução
      • Modelo de relacionamento entre entidades
      • O modelo relacional
      • Refinamento de esquema: Conceito de normalização e transações
      • Arquitetura de SGBD e algum SQL Avançado

      B) Componente Prática

      • Introdução à linguagem SQL;
      • Instruções: DDL, DML (DQL) e DCL
      • Operações: WHERE, ORDER BY, GROUP BY;
      • Conceito avançados em SQL: Controlo de erros
      • Operadores Relacionais: União, intersecção e Subtracção
      • Produto Cartesiano (externo)
      • Queries complexos (filtro com valores agregados) e sub-queries
      • Set DDL; Instrução CREATE; Tipos de dados; Nulidade; Instruções ALTER e DROP
      • INDICES e VIEWS
      • Controlo de erros: estrutura TRY¿CATCH
      • Procedimentos (SP) e Triggers
      • Operações com tabelas: Cursores
    • Linguagens de Programação II

      Apresentação

      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.

      DocentesPedro AlvesBruno CiprianoDuarte Neves

      Projetos

      • DEISI Chess

        Descrição
        • Criação um jogo de Xadrez!
        • Na primeira parte deste projeto os alunos são desafiados a criar a lógica por trás deste jogo, sendo que vão começar apenas a jogar com Reis.
        • Na segunda parte vão ser incorporadas as outras peças de maneira a completar este jogo.

        Conceitos aplicados da Unidade Curricular
        • diagramas UML
        • programação orientada a objetos de acordo com o teorema do encapsulamento
        Tecnologias usadas
        • linguagens de programação Java e de Kotlin
        • testes em JUnit 5
        • criação de um repositório Git no GitHub
      • DEISI Jungle

        Descrição
        • Desenvolver em Java uma aplicação gráfica (desktop) para um jogo de tabuleiro com animais, que envolve estratégia e movimentação baseada em características animais e alimentares
        • O jogo suporta até 4 jogadores, cada um iniciando com um animal diferente, e inclui elementos como alimentação e energia, influenciando a dinâmica do jogo.

        Conceitos aplicados da Unidade Curricular
        • Utilização correta de conceitos de programação orientada a objetos como encapsulamento, herança e polimorfismo.
        • Boas práticas de código e design de software, com expectativa de mais de 3000 linhas de código.
        • Planeamento com UML antes da codificação e uso intensivo de testes unitários em JUnit para garantir qualidade.
        Tecnologias usadas
        • Java e Kotlin (os alunos misturaram as duas linguagens no projeto)
        • IntelliJ
        • Git/GitHub
        • JUnit

      Programa

      • Paradigmas de programação
        • Imperativo, funcional, orientado a objetos
      • Conceitos de programação por objectos
        • Entidades, Atributos, Acções
        • Classe vs Objecto, Principio do encapsulamento
        • Herança, polimorfismo, parametrização por herança, composição
        • UML
          • Diagramas de classes
      • Java orientado a objectos
        • Classes, objectos, variáveis
        • Construtores, métodos
        • Visibilidade, Exceptions
        • Estruturas de dados: Arrays, Lists, Maps
        • Herança, classes abstractas
        • Input/Output
      • Testes unitários
        • JUnit
      • Controlo de versões
        • Git, Github
      • Padrões de desenho
        • Factory, Singleton, Observer/Observable, Composite
      • Conceitos de programação funcional em Kotlin
        • Funções puras, lambdas, funções de primeira ordem, iteração interna, operações com listas
      • Boas práticas de programação multi-paradigma
    • Probabilidades e Estatística

      Apresentação

      A disciplina de Probabilidades e Estatística tem como objetivo fundamental dar ao estudante conceitos fundamentais da teoria da probabilidade e técnicas de estatística descritiva e inferência estatística, essenciais para o estudo de Engenharia. 

      DocentesSofia NaiqueGuilherme Antunes

      Programa

      1. Estatística Descritiva:

      • Tabelas de frequência;
      • Representação Gráfica;
      • Cálculo de medidas descritivas de localização e dispersão;

       

      2. Regressão Linear:

      • Estimar os parâmentros do modelo;
      • Calcular e compreender o coeficiente de determinação;

       

      3. Teoria das Probabilidades:

      • Experiência aleatória: Espaço amostral; Acontecimentos;
      • Álgebra de acontecimentos: Definição, Propriedades da Probabilidade; Axiomática Kolmogorov;
      • Probabilidade Condicionada: Independência; Teorema de Bayes;

       

      4. Variáveis aleatórias discretas e continuas:

      •  Função de probabilidade, Função densidade de probabilidade e Função distribuição;
      • Parâmetros de variáveis aleatórias: Valor esperado, Variância e Desvio padrão;

       

      5. Distribuições discretas: Bernoulli, Binomial e Poisson;

       

      6. Distribuições contínuas: Normal e Exponencial;

       

      7. Inferência Estatística:

      •  Amostra e Amostra Aleatória. Média amostral; 

       

      8. Estimação:

      • Intervalos de Confiança para Valor Esperado;
      • Testes de Hipóteses para Valor Esperado.

       

    • Sistemas Operativos

      Apresentação

      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.

      DocentesJoão CraveiroDaniel M. SilveiraJoão Madeira

      Programa

      • Introdução a Sistemas Operativos
      • Processos
      • Threads e concorrência
      • Escalonamento do CPU
      • Sincronização de processos
      • Deadlocks
      • Gestão de Memória
      • Gestão de armazenamento em massa
      • Sistema de ficheiros
      • Virtualizacao
    2.º Semestre
    • Engenharia de Requisitos e Testes

      Apresentação

      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.

      DocentesRui RibeiroJosé Cascais BrásLuis A. Gomes

      Programa

      Estrutura de Capítulos principais de conteúdos

      1. Visão de Gerenciamento de Sistemas de Informação

      2. Engenharia de Requisitos (Gestão de backlog, BPMN e UML – Modelação)

      3. Testes de software

      4. Gestão de Projetos

    • Processamento de Imagem

      Apresentação

      Esta unidade curricular é dedicada ao processamento de imagem, como fonte sensorial de maior alto nével. Aqui será o apresentadas as várias tecnologias de sensores de imagem, a captação de imagem e em seguida são estudados os vários métodos de tratamento de imagem e de extração de informação. Na componente prática será desenvolvida uma aplicação de processamento de imagem, que irá usar os alguns dos métodos aprendidos durante o semestre para resolver um problema prático que será proposto, usando a biblioteca OpenCV e linguagem c#. Irá¿ também ser dado umas noções de introdução a Inteligência Artifical aplicadas nas imagens.

      DocentesJoão P. CarvalhoHouda Harkat

      Programa

      1. Processamento de Imagens: dos pixeis a¿s caracteri¿sticas;
      2. Operações sobre imagens;
      3. Segmentação;
      4. Deteção de objectos;
      5. Extração de características;
      6. Medidas;
      7. Análise de aplicações.

      Conteúdos de ensino à distância: Tutoriais e apoio em video-conferência e/ou em comunicação assíncrona.

    • Programação Web

      Apresentação

      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.

      DocentesLucio StuderPedro PerdigãoRui Santos

      Projetos

      • Portfolio

        Descrição
        • Criação de aplicação Web com um portfolio. Segue o modelo Model-View-Control. Integra modelação e implementação de uma base de dados, desenvolvimento de toda a lógica de negócio, e criação de interfaces Web.
        • Criação de uma aplicações sobre o curso (com informação das disciplinas e seus conteudos), projetos realizados
        • Criação de um blog, que permite comentários e ratings
        • Interligação com APIs

        Conceitos aplicados da Unidade Curricular
        • Model-view-control
        • Framework de desenvolvimento web django, para backend e frontend
        • Modelação de bases de dados
        • Criação de interfaces Web
        • Desenvolvimento de APIs, web scraping e automação
        • Utilização de uma Platform as a Service (PaaS)
        Tecnologias usadas
        • Python , Django, Selenium
        • MySQL
        • HTML, CSS, JavaScript
        • GitHub e PythonAnywhere

      Programa

      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

      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 

      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

    • Redes de Computadores

      Apresentação

      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.

      DocentesJoão CraveiroBrena LimaHouda Harkat

      Programa

      CP1: Introdução

      • O que é a Internet?
      • Elementos
      • Convenções
      • Serviços
      • Protocolos
      • The Network Edge (Periferia da Network)
      • The Network Core (Malha interna)
      • Circuit Switching (Comutação de Circuitos)
      • Packet Switching (Comutação de Pacotes)
      • Topologias e Redes de Acesso
      • Niveis de Protocolos e Modelos de Serviço

      CP2: Camada de Aplicação

      • Evolução de Aplicações de Internet
      • DNS (Domain Name System)
      • HTTP (HyperText Transfer Protocol)
      • Web proxies and caching
      • Sistemas Distribuidos
      • Peer-to-peer (BitTorrent)
      • Aplicações Real-time (VoIP)

      CP3: Camada de Transporte

      • Service models
      • User Datagram Protocol (UDP)
      • Connections (TCP)
      • Sliding Window (TCP)
      • Flow control (TCP)
      • Retransmission timers (TCP)
      • Congestion control (TCP)

      CP4: Camada de Rede

      • Network service models
      • IP (Internet Protocol)
      • NAT, a ¿middlebox¿
      • Routing algorithms

      CP5: Camada Data Link

      • Framing
      • Error detection and correction
      • Retransmissions
      • Multiple Access
      • Switching
    • Sistemas de Suporte à Decisão

      Apresentação

      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.

      DocentesRui RibeiroJoão CaldeiraJoão Licínio

      Projetos

      • Modelação, ETL e Reporting

        Descrição
        • Modelação de uma base de dados relacional transformando-a em um modelo dimensional (estrela) usando o Oracle Data Modeler
        • Implementação de processos ETL para transferência e transformação de dados para um Datawarehouse com o Pentaho Data Integration
        • Criação de relatórios e dashboards analíticos com visualizações interativas utilizando o Power BI Desktop, para facilitar a tomada de decisão baseada em dados

        Conceitos aplicados da Unidade Curricular
        • Modelação Dimensional – o modelo em Estrela
        • Extração, transformação e carregamento de dados para um Datawarehouse
        • Análise de dados – Ferramentas de Reporting
        Tecnologias usadas
        • Oracle Data Modeler
        • Pentaho Data Integration
        • Power BI Desktop

      Programa

      • Desafios de Negócio de DW
      • Arquitecturas DW
      • Melhores Práticas de Modelação de DW
      • Implementação de ETL
      • Bases de Dados específicas para BI
      • Ferramentas de Relatórios
  • 3.º Ano

    1.º Semestre
    • Computação Distribuída

      Apresentação

      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.

      DocentesPaulo GuedesSérgio Nunes

      Projetos

      • OceanView Seats

        Descrição
        • Este projeto consiste no desenvolvimento de um serviço distribuído de reservas de sombrinhas e espreguiçadeiras para praias no Algarve.
        • O sistema permite que os utilizadores realizem várias ações, como por exemplo,
        • listagem de sombrinhas (não reservadas) de uma praia, reserva de sombrinhas e cance-
        • lamento de reservas.
        • O serviço permite ainda registo e autenticação de utilizadores (de forma segura) de modo a que estes consigam fazer a gestão das suas reservas.
        • Todas as operações do serviço são disponibilizadas através de uma User Interface (UI) simples e intuitiva.
        • A arquitetura do sistema destaca-se pela eficiência e modularidade permitindo que este seja facilmente escalável.

        Conceitos aplicados da Unidade Curricular
        • Arquiteturas e Modelos de Comunicação Distribuída.
        • Invocação Remota e Objetos Distribuídos. Modelo de execução RPC (Remote Procedure Call).
        • Web Services (WS). Modelo de Execução Web Services (WS). Linguagens de definição de serviços (WSDL).
        • REST (REpresentational State Transfer) e SOAP (Simple Object Access Protocol).
        • Autenticação e controlo de acessos.
        • Segurança. Modelo de segurança.
        • Modelo transacional. Propriedades ACID
        Tecnologias usadas
        • Java
        • Eclipse IDE/IntelliJ IDEA
        • Maven
        • Java RMI
        • Apache Tomcat
        • GitHub
        • PostgreSQL (opção do grupo)
        • JavaFX (opção do grupo)

      Programa

      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

    • Data Science

      Apresentação

      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.

      DocentesManuel M. PitaZuil Pirola

      Programa

      1. Introdução à Ciência de Dados
      2. O que significa aprender com dados?
      3. Como garantir a precisão dos modelos?
      4. Regressão linear simples
      5. Regressão linear múltipla
      6. Como trabalhar com modelos de regressão?
      7. Classificação logística
      8. Modelos de classificação generativa
      9. Métodos de reamostragem
      10. Métodos baseados em árvores para regressão e classificação
      11. Aspetos éticos e regulamentos âmbito da Ciência de dados
    • Engenharia de Software

      Apresentação

      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.

      DocentesJosé Cascais BrásPedro PerdigãoRui Santos

      Programa

      • CP1. Introdução à Engenharia de Software;
      • CP2. Modelos e processos desenvolvimento de software;
        • Modelos Clássicos: Cascata (contexto histórico)
        • Modelos Ágeis: Agile (framework de Scrum)
      • CP3. Modelação de sistemas;
        • Análise de requisitos
        • Diagrama de domínio
        • Diagrama de conceitos
        • Casos de uso
      • CP4. Desenho da arquitectura;
        • Análise
        • Desenho
        • Avaliação
        • Evolução
      • CP5. Desenho e implementação;
        • Padrões UML
        • Princípios de desenvolvimento orientado a objectos: S.O.L.I.D, KISS, entre outros.
      • CP6. Verificação e validação;
        • Conhecer os diferentes tipos de testes
        • Aplicação de testes unitários
      • CP7. Segurança e Confiabilidade
      • CP8. Integração Contínua
        • Vantagens
        • Ferramentas e tecnologias
    • Interação Humano-Máquina

      Apresentação

       

       

       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.

      DocentesConceição CostaMiguel Tavares

      Programa

      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.

    2.º Semestre
    • Computação Móvel

      Apresentação

      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 uma linguagem/tecnologia específica mas sim abordar temas intemporais desta área como os vários Modelos de Desenvolvmento, Autonomia, Geo-localização, Conectividade ou Usabilidade.

      DocentesPedro AlvesMiguel Tavares

      Projetos

      • Cine Cartaz

        Descrição
        • Desenvolver uma aplicação móvel para Android, usando Kotlin, que permite aos utilizadores registar e avaliar filmes vistos no cinema, obter informações em tempo real através da API OMDb
        • Inclui funcionalidades como validação geográfica, fotografia de cenas, e consulta de histórico de filmes assistidos em diferentes formatos
        • A aplicação suporta funcionalidades offline e pesquisa de filmes por voz

        Conceitos aplicados da Unidade Curricular
        • Desenvolvimento em Android Nativo
        • Design e navegação de telas, formulários
        • Persistência de dados e integração com webservices
        • Adaptação a diferentes configurações de dispositivos e orientações de tela
        Tecnologias usadas
        • Kotlin
        • Android Studio
        • GitHub

      Programa

      Faceta "conceptual"

      • Computação Móvel / Sistemas Ubíquos / IoT
      • Arquitetura e desenvolvimento de aplicações móveis (Web, Híbridas, Nativas) – Usabilidade e Interação
      • Conectividade
      • Geo-localização
      • Autonomia
      • Sensores
      • Integração com serviços externos
      • Modelos de negócio

      Faceta "prática"

      • Arquitetura de aplicações móveis
        • Separação UI/Lógica de Negócio
        • Programação de widgets
        • Gestão de estado
        • Testes unitários / integração
        • Injeção de dependências
        • Programação assíncrona
        • Padrão repositório
    • Inteligência Artificial

      Apresentação

      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.

      DocentesManuel M. PitaZuil Pirola

      Programa

      1. Conceitos Básicos
        1. Definições de IA
        2. Máquina de Turing
        3. Redes neuronais de McCulloch e Pitts
        4. Cómo analisar máquinas? diagramas de transição de estados
      2. Busca
        1. O conceito de agente de busca em IA
        2. Espaços e Grafos de busca
        3. Busca não informada: British Museum, DFS, BFS
        4. Busca Informada: Dijkstra e A*
        5. Busca adversária
      3. Problemas de satisfação de restrições
      4. Nocões básicas de sistemas de recomendação
      5. O futuro de IA
        1. Analise critica de artigos recentes em IA
    • Segurança Informática

      Apresentaçã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

      DocentesSérgio Nunes

      Programa

      ¿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

    • Sistemas de Informação na Nuvem

      Apresentação

      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 .

      DocentesRui RibeiroLuis A. GomesRui Santos

      Programa

      Aulas teóricas:

      • Visão geral: história, mercado, tendências
      • Revisão de arquiteturas distribuídas: SOA, orientado a eventos Componentes e Serviços
      • O que é uma nuvem? Privado, público, híbrido
      • Tecnologias, modelos de negócios, principais fornecedores de serviços nacionais e internacionais
        • IaaS
        • BaaS
        • PaaS
        • SaaS
        • outras

      Agenda Prática:

      • 1º Trabalho – IaaS e PaaS
        • AWS EC2 – Implante e execute o servidor ubuntu
        • Docker PaaS – AWS Beanstalk
        • Heroku – implantação de 2 aplicativos, cada um por serviço
      • 2º Trabalho – SaaS e BaaS
        • Trello Board
        • AWS BaaS
        • Firebase (armazenar dados e média)

      Cada trabalho tem um planeamento prático de 6 aulas

Áreas Científicas

  • Outra forma de olhar para o curso e suas disciplinas

    • Matemática e Física

      • Álgebra Linear

        Apresentação

        Nesta unidade curricular, os estudantes irão aprender a trabalhar com matrizes, sistemas de equações lineares e espaços vetoriais reais, essenciais para a resolução de diversos problemas reais.

         

        DocentesMaria Silva, Luís Maia, Sofia Fernandes

        Programa

        CP1. Matrizes

        CP2. Sistemas de equações lineares

        CP3. Transformações lineares

        CP4. Espaços vetoriais

        CP5. Determinantes

        CP6. Valores e vetores próprios de matrizes

         

        Objetivos

        No final desta unidade curricular, os estudantes devem saber:

        OA1. Dominar os conceitos e as operações elementares sobre matrizes;

        OA2. Discutir e resolver sistemas de equações lineares e utilizar o método de eliminação de Gauss;

        OA3. Formular e resolver problemas do mundo real usando sistemas de equações lineares;

        OA4. Calcular determinantes e compreender a sua utilidade;

        OA5. Determinar os valores próprios e os vetores próprios e saber utilizá-los no processo de diagonalização;

        OA6. Reconhecer os conceitos de espaço vetorial e transformação linear e utilizá-los na resolução de problemas destes domínios;

        OA7. Identificar e utilizar os conteúdos abordados na resolução de problemas reais.

         

      • Fundamentos de Física

        Apresentação

        Mecânica clássica, eletrostátíca e corrente contínua.

        DocentesCristiane FerreiraAlexander MikovicCristina Guerra

        Projetos

        • Lançamento do Projétil

          O programa pede a altura, a velocidade inicial e o ângulo.
          Temos o output de um gráfico do trajeto do projétil consoante os inputs inseridos
          Podemos repetir o programa o quanto desejarmos.

        Programa

        1. Grandezas físicas, dimensões e sistemas de unidades.
        2. Referencial, posição e trajetória. Movimento unidimensional.
        3. Movimento no espaço. Projéteis e movimento circular.
        4. Leis de Newton. Tipos de forças, força gravitacional.
        5. Aplicações de Leis de Newton: plano inclinado, rodelas, mola oscilatória, pendulo.
        6. Trabalho. Forças conservativas e energia potencial.
        7. Conservação da energia mecânica.
        8. Centro de massa, impulso e momento linear. Colisões.
        9. Momento de uma força, momento de inércia e momento angular.
        10. Lei de Coulomb, campo elétrico.
        11. Potencial elétrico e capacitores.
        12. Corrente elétrica e resistência elétrica.
        13. Circuitos elétricos. Leis de Kirchhoff.

        Objetivos

        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.

      • Matemática Discreta

        Apresentação

        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.

        DocentesMaria SilvaHouda Harkat

        Programa

        CP1. Cálculo proposicional e quantificadores

        CP2. Provas

        CP3. Teoria de conjuntos

        CP4. Funções

        CP5. Teoria de números

        Objetivos

        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.

      • Matemática I

        Apresentação

        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. 

        DocentesAndré FonsecaSofia FernandesSofia Naique

        Programa

        1. Lógica Matemática

        • Designação e proposição. Valor lógico de uma proposição.  Conjunção e disjunção de proposições. Conjunto, interseção e união de conjuntos.

        2. Os números reais

        • Números racionais e irracionais. Ordem e valor absoluto.

        3. Funções reais de variável real:

        • Generalidades sobre funções. Funções polinomiais e racionais. Funções trigonométricas. Função exponencial e logarítmica.

        3. Limite:

        • Definição e propriedades de limites de uma função. Continuidade de funções.

        4. Derivada: 

        • Interpretação geométrica. Regras de derivação. Derivadas de ordem superior.

        5. Estudo global de uma função:

        • Monotonia e extremos relativos. Concavidade e pontos de inflexão. Assíntotas. Gráficos.

        6. Integração:

        • Primitiva imediata. Primitivação por substituição e por partes. Integral definido, teorema fundamental do cálculo.  Aplicações da integração (áreas de figuras planas).

        Objetivos

        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.

      • Matemática II

        Apresentação

        Geométria analítica e calculo diferencial e integral para funções reais de várias variáveis reais.

        DocentesAndré FonsecaGuilherme AntunesSofia Naique

        Programa

        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.

        Objetivos

        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.

      • Probabilidades e Estatística

        Apresentação

        A disciplina de Probabilidades e Estatística tem como objetivo fundamental dar ao estudante conceitos fundamentais da teoria da probabilidade e técnicas de estatística descritiva e inferência estatística, essenciais para o estudo de Engenharia. 

        DocentesSofia NaiqueGuilherme Antunes

        Programa

        1. Estatística Descritiva:

        • Tabelas de frequência;
        • Representação Gráfica;
        • Cálculo de medidas descritivas de localização e dispersão;

         

        2. Regressão Linear:

        • Estimar os parâmentros do modelo;
        • Calcular e compreender o coeficiente de determinação;

         

        3. Teoria das Probabilidades:

        • Experiência aleatória: Espaço amostral; Acontecimentos;
        • Álgebra de acontecimentos: Definição, Propriedades da Probabilidade; Axiomática Kolmogorov;
        • Probabilidade Condicionada: Independência; Teorema de Bayes;

         

        4. Variáveis aleatórias discretas e continuas:

        •  Função de probabilidade, Função densidade de probabilidade e Função distribuição;
        • Parâmetros de variáveis aleatórias: Valor esperado, Variância e Desvio padrão;

         

        5. Distribuições discretas: Bernoulli, Binomial e Poisson;

         

        6. Distribuições contínuas: Normal e Exponencial;

         

        7. Inferência Estatística:

        •  Amostra e Amostra Aleatória. Média amostral; 

         

        8. Estimação:

        • Intervalos de Confiança para Valor Esperado;
        • Testes de Hipóteses para Valor Esperado.

         

        Objetivos

        Pretende-se que o estudante:

         

        • Seja capaz de organizar dados estatístios e realizar análises de estatística descritiva e compreenda as principais medidas estatístcias de localização e dispersão;
        • Compreenda os aspetos teóricos essenciais dos modelos de regressão linear.
        • Compreenda os conceitos fundamentais da teoria das probabilidades e saiba calcular as probabilidades associadas ao fenómeno em estudo;
        • Seja capaz de caracterizar variáveis aleatórias e identificar as respectivas distribuições de probabilidade;
        • Seja capaz de aplicar técnicas adequadas de estimação pontual e intervalar para inferir sobre as características de uma população com base numa amostra e analisar os resultados obtidos;
        • Compreenda os procedimentos gerais para aplicação de um teste de hipóteses;
        • Compreenda a disciplina de Probalidades e Estatística como uma área da ciência que permite recolher e analisar dados, formular hipóteses relativas a esses dados e testar essas hipóteses.

         

    • Arquiteturas e Sistemas Operativos

      • Arquitetura de Computadores

        Apresentação

        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.

        DocentesDaniel FernandesPaulo GuedesRicardo SantosSérgio Ferreira

        Programa

        Aulas Teóricas

        1. Circuitos digitais MSI: Portas Lógicas, registos, contadores, memórias, multiplexers e descodificadores. Simulação.
        2. Arquitetura de um Microprocessador (CPU) genérico.
          1. Componentes básicos: ALU, Registos e Barramentos.
          2. Instruções e Microinstruções
          3. Memórias de Programa e Dados.
          4. Fluxo de informação num CPU: Operações Fetch e Execution
        3. Estudo de um Microcontrolador comercial de baixo custo.
        4. Ambiente de desenvolvimento, programação, simulação e teste.

        Aulas Práticas

        1. Componentes digitais típicos
        2. Simulação de componentes básicos da arquitetura interna de um CPU genérico
        3. Projeto simples com um microcontrolador comercial económico

        Objetivos

        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.

      • Arquiteturas Avançadas de Computadores

        Apresentação

        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.

        DocentesPedro SerraDaniel FernandesWellington Oliveira

        Projetos

        • Controlo e Gestão de Ginásio

          Criação de um sistema automatizado com arduinos
          Há liberdade de escolha do propósito do projeto

        • Casa Inteligente

          No âmbito da disciplina de arquitetura avançada de computadores decidimos como projeto final criar uma casa inteligente. O objetivo principal era criar um casa para um dia a dia mais pratico e facil.
          Na nossa casa contamos com um sistema de segurança com fechadura com um código e um sistema de alarme por movimento. Iluminação interior e exterior com sensores para uma eficiência energética melhor. Um sistema de ar condicionado com um display que disponibiliza a temperatura ambiente da casa bem como o estado de funcionamento do ar condicionado. Contamos tambem com uma persiana automática e uma campainha.

        Programa

        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

        Objetivos

        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.

      • Computação Distribuída

        Apresentação

        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.

        DocentesPaulo GuedesSérgio Nunes

        Projetos

        • OceanView Seats

          Este projeto consiste no desenvolvimento de um serviço distribuído de reservas de sombrinhas e espreguiçadeiras para praias no Algarve.
          O sistema permite que os utilizadores realizem várias ações, como por exemplo,
          listagem de sombrinhas (não reservadas) de uma praia, reserva de sombrinhas e cance-
          lamento de reservas.
          O serviço permite ainda registo e autenticação de utilizadores (de forma segura) de modo a que estes consigam fazer a gestão das suas reservas.
          Todas as operações do serviço são disponibilizadas através de uma User Interface (UI) simples e intuitiva.
          A arquitetura do sistema destaca-se pela eficiência e modularidade permitindo que este seja facilmente escalável.

        Programa

        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

        Objetivos

        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.

      • Sistemas Digitais

        Apresentação

        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.

        DocentesJoão P. CarvalhoCarlos FernandesDaniel FernandesSérgio Ferreira

        Programa

        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%)

        Objetivos

        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.

      • Sistemas Operativos

        Apresentação

        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.

        DocentesJoão CraveiroDaniel M. SilveiraJoão Madeira

        Programa

        • Introdução a Sistemas Operativos
        • Processos
        • Threads e concorrência
        • Escalonamento do CPU
        • Sincronização de processos
        • Deadlocks
        • Gestão de Memória
        • Gestão de armazenamento em massa
        • Sistema de ficheiros
        • Virtualizacao

        Objetivos

        No final da cadeira, os alunos deverão:

        • Conhecer os princípios dos Sistemas Operativos actuais e identificar os vários componentes que o constituem.
        • Conhecer os algoritmos fundamentais em que assentam os principais componentes de um Sistema Operativo assim como as suas optimizações mais atuais.
        • Programar exemplos ilustrativos de alguns algoritmos mais representativos (escalonador, sistema de ficheiros, etc..)
        • Tirar partido da utilização directa das interfaces sistema para o desenvolvimento e optimização de aplicações complexas.
    • Redes e Telecomunicações

      • Redes de Computadores

        Apresentação

        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.

        DocentesJoão CraveiroBrena LimaHouda Harkat

        Programa

        CP1: Introdução

        • O que é a Internet?
        • Elementos
        • Convenções
        • Serviços
        • Protocolos
        • The Network Edge (Periferia da Network)
        • The Network Core (Malha interna)
        • Circuit Switching (Comutação de Circuitos)
        • Packet Switching (Comutação de Pacotes)
        • Topologias e Redes de Acesso
        • Niveis de Protocolos e Modelos de Serviço

        CP2: Camada de Aplicação

        • Evolução de Aplicações de Internet
        • DNS (Domain Name System)
        • HTTP (HyperText Transfer Protocol)
        • Web proxies and caching
        • Sistemas Distribuidos
        • Peer-to-peer (BitTorrent)
        • Aplicações Real-time (VoIP)

        CP3: Camada de Transporte

        • Service models
        • User Datagram Protocol (UDP)
        • Connections (TCP)
        • Sliding Window (TCP)
        • Flow control (TCP)
        • Retransmission timers (TCP)
        • Congestion control (TCP)

        CP4: Camada de Rede

        • Network service models
        • IP (Internet Protocol)
        • NAT, a ¿middlebox¿
        • Routing algorithms

        CP5: Camada Data Link

        • Framing
        • Error detection and correction
        • Retransmissions
        • Multiple Access
        • Switching

        Objetivos

        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.

      • Segurança Informática

        Apresentaçã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

        DocentesSérgio Nunes

        Programa

        ¿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

        Objetivos

        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.

    • Programação e Engenharia de SW

      • Algoritmia e Estruturas de Dados

        Apresentação

        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.  

        DocentesPedro AlvesBruno CiprianoDuarte NevesRodrigo CorreiaWellington Oliveira

        Projetos

        • Rock in DEISI

          Desenvolver uma aplicação de linhas de comando em Java que permite realizar queries relativamente sofisticadas sobre uma base de dados real contendo informações sobre músicas e artistas dos últimos 100 anos, obtidas de repositórios públicos.
          A base de dados é representada em ficheiros CSV e os alunos devem implementar estruturas de dados em memória para responder às queries eficientemente.

        Programa

        • funções recursivas, algoritmos recursivos
        • tipos de dados complexos
        • eficiência e optimização (algorítmica e não-algorítmica)
        • complexidade de algoritmos
        • algoritmos de pesquisa
        • algoritmos de ordenação – bubble sort, selection sort, merge sort, quick sort
        • tipos de dados abstractos – pilhas e filas
        • listas ligadas
        • árvores binárias, árvores ordenadas, árvores AVL
        • hashtables

        Objetivos

        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).

      • Computação Móvel

        Apresentação

        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 uma linguagem/tecnologia específica mas sim abordar temas intemporais desta área como os vários Modelos de Desenvolvmento, Autonomia, Geo-localização, Conectividade ou Usabilidade.

        DocentesPedro AlvesMiguel Tavares

        Projetos

        • Cine Cartaz

          Desenvolver uma aplicação móvel para Android, usando Kotlin, que permite aos utilizadores registar e avaliar filmes vistos no cinema, obter informações em tempo real através da API OMDb
          Inclui funcionalidades como validação geográfica, fotografia de cenas, e consulta de histórico de filmes assistidos em diferentes formatos
          A aplicação suporta funcionalidades offline e pesquisa de filmes por voz

        Programa

        Faceta "conceptual"

        • Computação Móvel / Sistemas Ubíquos / IoT
        • Arquitetura e desenvolvimento de aplicações móveis (Web, Híbridas, Nativas) – Usabilidade e Interação
        • Conectividade
        • Geo-localização
        • Autonomia
        • Sensores
        • Integração com serviços externos
        • Modelos de negócio

        Faceta "prática"

        • Arquitetura de aplicações móveis
          • Separação UI/Lógica de Negócio
          • Programação de widgets
          • Gestão de estado
          • Testes unitários / integração
          • Injeção de dependências
          • Programação assíncrona
          • Padrão repositório

        Objetivos

        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).

      • Engenharia de Software

        Apresentação

        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.

        DocentesJosé Cascais BrásPedro PerdigãoRui Santos

        Programa

        • CP1. Introdução à Engenharia de Software;
        • CP2. Modelos e processos desenvolvimento de software;
          • Modelos Clássicos: Cascata (contexto histórico)
          • Modelos Ágeis: Agile (framework de Scrum)
        • CP3. Modelação de sistemas;
          • Análise de requisitos
          • Diagrama de domínio
          • Diagrama de conceitos
          • Casos de uso
        • CP4. Desenho da arquitectura;
          • Análise
          • Desenho
          • Avaliação
          • Evolução
        • CP5. Desenho e implementação;
          • Padrões UML
          • Princípios de desenvolvimento orientado a objectos: S.O.L.I.D, KISS, entre outros.
        • CP6. Verificação e validação;
          • Conhecer os diferentes tipos de testes
          • Aplicação de testes unitários
        • CP7. Segurança e Confiabilidade
        • CP8. Integração Contínua
          • Vantagens
          • Ferramentas e tecnologias

        Objetivos

        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.

      • Fundamentos de Programação

        Apresentação

        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.

        DocentesPedro AlvesBrena LimaBruno SaraivaLucio StuderRodrigo CorreiaWellington Oliveira

        Projetos

        • Jogo das Tendas

          Desenvolver uma grelha 2D que simule o terreno do jogo, com árvores distribuídas aleatoriamente. Permitir que o jogador coloque tendas junto às árvores, assegurando que cada tenda esteja ligada apenas a uma árvore.
          Implementar regras para assegurar que as tendas não se toquem, nem mesmo na diagonal, e criar uma interface de linha de comando para a interação do jogador com o jogo.

        • Batalha Naval

          Desenvolver uma grelha 2D que simule a arena do jogo, com navios e marcadores de jogadas anteriores.
          Criar uma interface de linha de comando para a interação do jogador com o jogo.

        Programa

        • Introdução à programação
        • Algoritmos, fluxogramas, pseudo-código
        • Sintaxe e semântica das linguagens
        • Elementos da sintaxe, estrutura de um programa
        • Declarações e atribuições
        • Tipos primitivos
        • Expressões aritméticas, expressões lógicas
        • Entradas e saídas de dados
        • Selecção
        • Repetição
        • Funções
        • Arrays uni-dimensionais e bi-dimensionais
        • Tratamento de erros
        • Leitura e escrita de ficheiros
        • Boas práticas de programação imperativa

        Objetivos

        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.).

      • Linguagens de Programação I

        Apresentação

        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.

        DocentesPedro AlvesBruno CiprianoDuarte Neves

        Projetos

        • DEISI Chess

          Criação um jogo de Xadrez!
          Na primeira parte deste projeto os alunos são desafiados a criar a lógica por trás deste jogo, sendo que vão começar apenas a jogar com Reis.
          Na segunda parte vão ser incorporadas as outras peças de maneira a completar este jogo.

        • DEISI Jungle

          Desenvolver em Java uma aplicação gráfica (desktop) para um jogo de tabuleiro com animais, que envolve estratégia e movimentação baseada em características animais e alimentares
          O jogo suporta até 4 jogadores, cada um iniciando com um animal diferente, e inclui elementos como alimentação e energia, influenciando a dinâmica do jogo.

        Programa

        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

        Objetivos

        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.

      • Linguagens de Programação II

        Apresentação

        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.

        DocentesPedro AlvesBruno CiprianoDuarte Neves

        Projetos

        • DEISI Chess

          Criação um jogo de Xadrez!
          Na primeira parte deste projeto os alunos são desafiados a criar a lógica por trás deste jogo, sendo que vão começar apenas a jogar com Reis.
          Na segunda parte vão ser incorporadas as outras peças de maneira a completar este jogo.

        • DEISI Jungle

          Desenvolver em Java uma aplicação gráfica (desktop) para um jogo de tabuleiro com animais, que envolve estratégia e movimentação baseada em características animais e alimentares
          O jogo suporta até 4 jogadores, cada um iniciando com um animal diferente, e inclui elementos como alimentação e energia, influenciando a dinâmica do jogo.

        Programa

        • Paradigmas de programação
          • Imperativo, funcional, orientado a objetos
        • Conceitos de programação por objectos
          • Entidades, Atributos, Acções
          • Classe vs Objecto, Principio do encapsulamento
          • Herança, polimorfismo, parametrização por herança, composição
          • UML
            • Diagramas de classes
        • Java orientado a objectos
          • Classes, objectos, variáveis
          • Construtores, métodos
          • Visibilidade, Exceptions
          • Estruturas de dados: Arrays, Lists, Maps
          • Herança, classes abstractas
          • Input/Output
        • Testes unitários
          • JUnit
        • Controlo de versões
          • Git, Github
        • Padrões de desenho
          • Factory, Singleton, Observer/Observable, Composite
        • Conceitos de programação funcional em Kotlin
          • Funções puras, lambdas, funções de primeira ordem, iteração interna, operações com listas
        • Boas práticas de programação multi-paradigma

        Objetivos

        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.

      • Programação Web

        Apresentação

        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.

        DocentesLucio StuderPedro PerdigãoRui Santos

        Projetos

        • Portfolio

          Criação de aplicação Web com um portfolio. Segue o modelo Model-View-Control. Integra modelação e implementação de uma base de dados, desenvolvimento de toda a lógica de negócio, e criação de interfaces Web.
          Criação de uma aplicações sobre o curso (com informação das disciplinas e seus conteudos), projetos realizados
          Criação de um blog, que permite comentários e ratings
          Interligação com APIs

        Programa

        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

        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 

        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

        Objetivos

        • Entender o funcionamento da Internet e da Web.
        • Compreender os princípios da programação Web e seus principais padrões de desenho.
        • Aplicar estes conceitos, usando várias tecnologias (HTML, CSS, JavaScript, Python and Django¿).
        • Arquitetar aplicações eficientes, de fácil manutenção, que corram na Web.
        • Avaliar as diferentes estratégias de desenho, sabendo escolher a abordagem que mais se adequa ao contexto.
        • Ser capaz de construir e implantar na cloud aplicações Web complexas e criativas, totalmente funcionais (full stack).
      • Sistemas de Informação na Nuvem

        Apresentação

        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 .

        DocentesRui RibeiroLuis A. GomesRui Santos

        Programa

        Aulas teóricas:

        • Visão geral: história, mercado, tendências
        • Revisão de arquiteturas distribuídas: SOA, orientado a eventos Componentes e Serviços
        • O que é uma nuvem? Privado, público, híbrido
        • Tecnologias, modelos de negócios, principais fornecedores de serviços nacionais e internacionais
          • IaaS
          • BaaS
          • PaaS
          • SaaS
          • outras

        Agenda Prática:

        • 1º Trabalho – IaaS e PaaS
          • AWS EC2 – Implante e execute o servidor ubuntu
          • Docker PaaS – AWS Beanstalk
          • Heroku – implantação de 2 aplicativos, cada um por serviço
        • 2º Trabalho – SaaS e BaaS
          • Trello Board
          • AWS BaaS
          • Firebase (armazenar dados e média)

        Cada trabalho tem um planeamento prático de 6 aulas

        Objetivos

        • Entenda por que as empresas estão migrando para serviços em nuvem para apoiar seus negócios
        • Quais são os modelos de negócios
        • Quais são os principais provedores de serviços
        • Principais conceitos da arquitetura em nuvem
        • Recursos práticos para criar e implantar um serviço em nuvem
    • Sistemas de Informação

      • Bases de Dados

        Apresentação

        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.

        DocentesRui RibeiroJoão CaldeiraLuis A. Gomes

        Programa

        O programa da unidade curricular é:
        A) Componente Teórico

        • Introdução
        • Modelo de relacionamento entre entidades
        • O modelo relacional
        • Refinamento de esquema: Conceito de normalização e transações
        • Arquitetura de SGBD e algum SQL Avançado

        B) Componente Prática

        • Introdução à linguagem SQL;
        • Instruções: DDL, DML (DQL) e DCL
        • Operações: WHERE, ORDER BY, GROUP BY;
        • Conceito avançados em SQL: Controlo de erros
        • Operadores Relacionais: União, intersecção e Subtracção
        • Produto Cartesiano (externo)
        • Queries complexos (filtro com valores agregados) e sub-queries
        • Set DDL; Instrução CREATE; Tipos de dados; Nulidade; Instruções ALTER e DROP
        • INDICES e VIEWS
        • Controlo de erros: estrutura TRY¿CATCH
        • Procedimentos (SP) e Triggers
        • Operações com tabelas: Cursores

        Objetivos

        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;

      • Engenharia de Requisitos e Testes

        Apresentação

        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.

        DocentesRui RibeiroJosé Cascais BrásLuis A. Gomes

        Programa

        Estrutura de Capítulos principais de conteúdos

        1. Visão de Gerenciamento de Sistemas de Informação

        2. Engenharia de Requisitos (Gestão de backlog, BPMN e UML – Modelação)

        3. Testes de software

        4. Gestão de Projetos

        Objetivos

        • Entender o que é Gestão de Sistemas de Informação
        • Por que é fundamental definir requisitos
        • Saber desenvolver e gerenciar uma metodologia de definição e estrutura de requisitos
        • Como alinhar os testes com os requisitos
        • Compreender a importância de modelar os requisitos e testes
        • Fundamentos de Gestão de Projetos
      • Sistemas de Suporte à Decisão

        Apresentação

        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.

        DocentesRui RibeiroJoão CaldeiraJoão Licínio

        Projetos

        • Modelação, ETL e Reporting

          Modelação de uma base de dados relacional transformando-a em um modelo dimensional (estrela) usando o Oracle Data Modeler
          Implementação de processos ETL para transferência e transformação de dados para um Datawarehouse com o Pentaho Data Integration
          Criação de relatórios e dashboards analíticos com visualizações interativas utilizando o Power BI Desktop, para facilitar a tomada de decisão baseada em dados

        Programa

        • Desafios de Negócio de DW
        • Arquitecturas DW
        • Melhores Práticas de Modelação de DW
        • Implementação de ETL
        • Bases de Dados específicas para BI
        • Ferramentas de Relatórios

        Objetivos

        • Entender por que as empresas precisam de um ambiente de BI
        • Quais componentes da arquitetura existem para BI
        • Esquemas de modelação para DW
        • Conhecer os vários processos de manipulação de dados em ambientes DW
        • O que um colaborador/utilizador pode obter em interfaces de relatórios
    • Interação Humano-Máquina

      • Interação Humano-Máquina

        Apresentação

         

         

         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.

        DocentesConceição CostaMiguel Tavares

        Programa

        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.

        Objetivos

        • 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.

    • Dados e Inteligência Artificial

      • Data Science

        Apresentação

        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.

        DocentesManuel M. PitaZuil Pirola

        Programa

        1. Introdução à Ciência de Dados
        2. O que significa aprender com dados?
        3. Como garantir a precisão dos modelos?
        4. Regressão linear simples
        5. Regressão linear múltipla
        6. Como trabalhar com modelos de regressão?
        7. Classificação logística
        8. Modelos de classificação generativa
        9. Métodos de reamostragem
        10. Métodos baseados em árvores para regressão e classificação
        11. Aspetos éticos e regulamentos âmbito da Ciência de dados

        Objetivos

        1. Familiarizar os estudantes com o campo multidisciplinar da Ciência de Dados
        2. Adquirir conhecimentos aprofundados sobre o que significa aprender estatisticamente a partir de dados
        3. Compreender o que são os modelos de regressão e classificação
        4. Compreender como validar e utilizar modelos construídos a partir de dados
        5. Adquirir uma diversidade de métodos para criar modelos de regressão e classificação
        6. Comparar criticamente diferentes métodos para produzir modelos de regressão ou classificação
        7. Compreender a importância e usos de métodos de reamostragem na Ciência de Dados
        8. Compreender os princípios éticos básicos e regulamentações no contexto de modelos baseados em dados
      • Inteligência Artificial

        Apresentação

        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.

        DocentesManuel M. PitaZuil Pirola

        Programa

        1. Conceitos Básicos
          1. Definições de IA
          2. Máquina de Turing
          3. Redes neuronais de McCulloch e Pitts
          4. Cómo analisar máquinas? diagramas de transição de estados
        2. Busca
          1. O conceito de agente de busca em IA
          2. Espaços e Grafos de busca
          3. Busca não informada: British Museum, DFS, BFS
          4. Busca Informada: Dijkstra e A*
          5. Busca adversária
        3. Problemas de satisfação de restrições
        4. Nocões básicas de sistemas de recomendação
        5. O futuro de IA
          1. Analise critica de artigos recentes em IA

        Objetivos

        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.

      • Processamento de Imagem

        Apresentação

        Esta unidade curricular é dedicada ao processamento de imagem, como fonte sensorial de maior alto nével. Aqui será o apresentadas as várias tecnologias de sensores de imagem, a captação de imagem e em seguida são estudados os vários métodos de tratamento de imagem e de extração de informação. Na componente prática será desenvolvida uma aplicação de processamento de imagem, que irá usar os alguns dos métodos aprendidos durante o semestre para resolver um problema prático que será proposto, usando a biblioteca OpenCV e linguagem c#. Irá¿ também ser dado umas noções de introdução a Inteligência Artifical aplicadas nas imagens.

        DocentesJoão P. CarvalhoHouda Harkat

        Programa

        1. Processamento de Imagens: dos pixeis a¿s caracteri¿sticas;
        2. Operações sobre imagens;
        3. Segmentação;
        4. Deteção de objectos;
        5. Extração de características;
        6. Medidas;
        7. Análise de aplicações.

        Conteúdos de ensino à distância: Tutoriais e apoio em video-conferência e/ou em comunicação assíncrona.

        Objetivos

        Pretende-se que no final do semestre os estudantes possuam:

        • Capacidades de analisar imagens 2D e aplicar os filtros necessários (como a rotação, translação, etc) para um determinado objectivo;
        • Conhecimentos mais aprofundados na linguagem c#;
        • Noçõess básicas de inteligência artifical em imagens.
    • Gestão e Softskills

      • Competências Comportamentais

        Apresentação

        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.

        DocentesDiogo MoraisTomáz Saraiva

        Projetos

        • IT in competences development

          Desenvolvimento de competências via projetos tecnológicos (apps, jogos, websites), incluindo análise de mercado e estratégias de monetização.
          Apresentação de 10 minutos para captação de investimento, seguida de avaliação pelos pares.

        Programa

        Marketing Pessoal:

        1. CV;
        2. Portefólio;
        3. Apresentação pessoal e contextos de entrevista;
        4. Apresentação em público e ferramentas de suporte;
        5. Redes sociais e Networking;
        6. Factos Vs Opiniões;
        7. Gestão de tempo:
          1. Trabalho remoto e comunicação mediada;
          2. Work-life balance.
        8. As tecnologias no trabalho: oportunidades e ameaças:
        9. Trabalho em equipa;
        10. Comunicação;
        11. Personal and Social Skills development;
        12. Percursos de carreira;
        13. Critical thinking and problem solving.

        Objetivos

        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.

    • Genérica

      • Trabalho Final de Curso

        Apresentação

        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).

         

        DocentesLuis A. GomesDaniel FernandesGabriela SoaresJoão P. CarvalhoLucio StuderPedro AlvesSofia NaiqueBruno CiprianoBruno SaraivaDiogo MoraisDuarte NevesJoão CaldeiraJoão CraveiroJosé Cascais BrásManuel M. PitaMaria SilvaPedro PerdigãoPedro SerraRodrigo CorreiaRui RibeiroRui SantosSérgio FerreiraSofia FernandesWellington OliveiraZuil PirolaDaniel M. Silveira

        Programa

        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.

        Objetivos

        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.

  • Competências adquiridas

    O curso de licenciatura em Engenharia Informática da Universidade Lusófona desenvolve perfis com fortes competências tecnológicas e humanas, de forma a potenciar aos seus licenciados um elevado grau de empregabilidade, ou o prosseguimento dos estudos de 2º ciclo com excelentes perspectivas de sucesso. Os licenciados em Eng.ª Informática têm assim a possibilidade de escolher diversas carreiras profissionais:
    – Analista Programador
    – Consultor na área das TI
    – Arquitecto de Soluções
    – Arquitecto/Administrador de Redes

    Nas seguintes áreas tecnológicas:
    – Desenvolvimento de Aplicações Empresariais
    – Desenvolvimento de Aplicações Móveis
    – Concepção e Gestão de Repositórios de Informação
    – Novos Paradigmas da Internet (Cloud Computing, Redes Sociais)
    – Gestão de Sistemas Informáticos
    – Etc..

  • Destinatários

    A Licenciatura em Engenharia Informática destina-se as estudantes que:
    – Pretendam adquirir fortes competências em Tecnologias de Informação e Comunicação
    – Procurem uma formação tecnológica avançada permanentemente adaptada à evolução das necessidades do mercado de trabalho, nas áreas de concepção, realização e manutenção de sistemas informáticos, programação de aplicações e de sistemas, desenho e arquitecturas de computação e comunicações e gestão de sistemas de informação;
    – Pretendam desenvolver o espírito empreendedor, obtendo competências para criar conceitos originais e transformá-los em produtos inovadores.
    – Pretendam adquirir capacidade prosseguir os estudos de Mestrado, nomeadamente em Engenharia Informática e Sistemas de Informação e eventualmente escolher uma carreira académica.
    Para ingressar nesta Licenciatura, os candidatos deverão:
    – Ser titulares de um curso de ensino secundário (12º ano) ou de habilitação legalmente equivalente e respectiva prova de acesso;
    – Ter sido aprovados nas provas para Maiores de 23 anos.

  • Ligação com o meio empresarial

    Para complementar os conhecimentos transmitidos no âmbito das Unidades Curriculares, são promovidas acções de formação profissional extra-curricular por empresas líderes de mercado ou personalidades de reconhecida competência, em ferramentas, tecnologias, metodologias ou produtos actuais e relevantes nas áreas das Tecnologias de Informação.
    Nalgumas Unidades Curriculares são promovidas apresentações feitas por convidados externos, com perfis reconhecidos nas áreas científicas do ciclo de estudos, assim como profissionais de referência em empresas nacionais e multinacionais. Estas iniciativas têm por objectivo desenvolver a capacidade dos estudantes em adquirir e aprofundar conhecimento a partir de exposições realizadas em ambiente de conferência, e simultaneamente dar-lhes acesso ao estado da arte e às evoluções tecnológicas nas áreas da sua formação. Por outro lado, visa promover um contacto permanente do estudante com o mundo científico e empresarial de modo a promover a sua inserção no mercado de trabalho.

  • Oportunidades de carreira

    O curso de licenciatura em Engenharia Informática da Universidade Lusófona pretende formar o perfil profissional do engenheiro de aplicações, caracterizado pela capacidade de participar em grandes projetos de engenharia informática, integrando equipas de desenvolvimento de projetos, gerindo e mantendo sistemas de informação. O diploma apresenta ainda uma formação aprofundadada em domínios comuns às Engenharias, como a Física e a Matemática, e em domínios específicos das Ciências Informáticas, como a Metodologia da Programação, os Sistemas de Informação, as Redes de Comunicações, e a gestão, tanto de sistemas como de projetos.

    Os Licenciados em Engenharia Informática encontrarão situações de emprego na rede Europeia de organismos públicos e privados com necessidades de desenvolvimento, utilização, reorganização e modernização de sistemas de informação, nomeadamente:
    – em empresas vocacionadas para o desenvolvimento e comercialização de soluções baseadas em informática;
    – na integração e chefia de equipas informáticas em grandes empresas dos setores comerciais, industriais ou dos serviços;
    – em instituições ligadas ao setor público estatal ou privado, em particular na área dos serviços.

Universidade Lusófona


ECATI Escola de Comunicação, Arquitetura, Artes e Tecnologias da Informação

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)


Lisboa
Avenida do Campo Grande,
376 1749-024 Lisboa, Portugal
Tel.: 217 515 500 | email: info.cul@ulusofona.pt
Porto
Rua Augusto Rosa,
Nº 24, 4000-098 Porto - Portugal
Tel.: 222 073 230 | email: info.cup@ulusofona.pt

Gestão de conteúdos por Lucio Studer Ferreira © 2022 COFAC.