Ciencia de Dados

Ciência de Dados, como definido por especialistas no campo, é uma ciência experimental multidisciplinar que vem dar resposta ao grande volume de dados "big-data" que tem crescido de forma exponencial face ao desenvolvimento tecnológico recente.
A oportunidade de transformar estes dados em informação e conhecimento, em prol do bem da sociedade, é essencial tando no negócio como na ciência entre outras áreas com impacto social.

Neste ciclo de estudo apresentamos um programa com fortes componentes em: Estatística, Matemática, Aprendizagem Automatizada, Programação, Extração e Manuseamento de dados, diversas componentes de Engenharia de Dados e uma forte incidência no tema de Privacidade, Segurança e Ética.

Plano de Estudos

Explore os conteúdos e projetos das unidades curriculares

  • 1.º Ano

    1.º Semestre
    • Fundamentos de Ciência de Dados

      Apresentação

      Esta unidade curricular é o primeiro contacto dos alunos com as múltiplas dimensões da ciência de dados. Apresenta conteúdos de “visão global” que serão aprofundados noutras UC, ao longo de toda a licenciatura.

      Nesta UC pretende-se dar ao aluno as visões de diferentes setores: académicos, empresariais e sociais, do uso e da utillidade da ciência de dados. Serão debatidos os seus principios básicos, a sua génese, as relações com outras disciplinas e algumas das suas ferramentes e princípios teóricos, assim como as potenciais implicações éticas da sua aplicação. Pretende-se igualmente levar o aluno a refletir sobre a fonte, o uso e o conhecimento que se pode extrair dos dados, contribuindo para o desenvolvimento da acuidade de pensamento baseado em evidência. 

      DocentesGabriela Soares

      Programa

      CP1 – Introdução à UC

      CP2 – Dados, tipos de dados e manipulação de dados

      • Metadados
      • Enviesamentos
      • Tipos de dados e representações
      • Computação e Armazenamento

      CP3 – Análise Exploratória de Dados

      • Medidas de posição e dispersão
      • Visualização

      CP4 – Modelação de dados, Bases de dados, Extração, Integração e Tratamento de dados

      • Origem dos dados
      • Fontes de dados
      • Extração
      • Dados x Informação
      • Processamento

      CP5 – Aprendizado de Máquina

      • Modelos supervisionados
      • Modelos não supervisionados

      CP6 – Estudo de Caso

      CP7 – Ética para a Ciência de Dados

      CP8 – Projetos em Ciência de Dados – Metodologias

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

      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).
    2.º Semestre
    • Linguagens de Programação

      Apresentação

      Esta e¿ uma disciplina fundamental na formac¿a¿o de qualquer profissional da a¿rea de Ciência de Dados pois introduz os conceitos ba¿sicos da programac¿a¿o, sobre os quais assentara¿o muitas disciplinas subsequentes. Mais do que aprender uma linguagem de programac¿a¿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 Python, uma linguagem promissora que combina as melhores caracteri¿sticas das linguagens modernas mais populares.

      Dado ser o primeiro contacto de muitos alunos com o to¿pico da Programac¿a¿o, reveste-se de uma importa¿ncia especial na aquisic¿a¿o de conhecimentos primordiais mas tambe¿m na sua motivac¿a¿o. Mais do que aprender a programar, os alunos aprendem a gostar de programar.

      DocentesBruno Saraiva

      Programa

      OPP

      Herança

      Encapsulmaneto, decorators, variáveis obsfucadas

      Geradores

      Arrays

      Visualização de informação

      Introdução a Algoritmia e Estrutura de Dados

  • 2.º Ano

    1.º Semestre
    • Algoritmia e Estrutura de Dados

      Apresentação

      Muitos projetos na área da programação envolvem a resolução de problemas computacionais complexos, para os quais soluções rápidas e simplistas podem não ser suficientemente eficientes. Esta UC foca-se na problemática da conceção de bons algoritmos e de como analisar a sua correção e a sua eficiência. Estas são questões particularmente importantes, numa altura a qualidade do software se vem tornado, progressivamente, numa questão central. Trata-se portanto de uma UC particularmente relevante para o ciclo de estudos.

      DocentesManuel M. Pita

      Projetos

      • Dados Complicados – Universidade do País Das Maravilhas

        Descrição
        • Projeto realizado com elevada interacção com o docente, tentando simular um ambiente real
        • Processar conteúdo para varias fontes de dados (bases de dados, ficheiros de texto)Identificar dados estranhos ou inválidosDescobrir quais os dados para considerar com ajuda do "data scientist"
        • Produzir data frames utilizando técnicas de data science

        Conceitos aplicados da Unidade Curricular
        • Bases de Dados
        • Programação
        • Comunicação
        Tecnologias usadas
        • SQL / MySQL
        • Python, Pandas
        • GitHub

      Programa

      CP1: Complexidade, classes, funções típicas e análise de algoritmos;

      CP2: Complexidade e recursividade (conjunto de problemas recursivos);

      CP3: Algoritmos de pesquisa e seleção;

      CP4: Algoritmos de ordenação: Insertion Sort, Heap Sort, Merge Sort e Quicksort;

      CP5: Comparação dos algoritmos de ordenação quanto à sua complexidade (programação do Quicksort);

      CP6: Tipos abstratos de dados: Pilha e Fila;

      CP7: array circular, listas simples e duplamente ligadas;

      CP8: Implementação de Pilha e Fila (programação em array e / ou listas);

      CP9: Funções de dispersão: aberta e fechada;

      CP10: Tabelas de hash (prática de utilização de Dicionários e Conjuntos);

      CP11: Árvore binária, árvores AVL e árvore preta e vermelha;

      CP12: Árvore binária (programação de árvore binária);

      CP13: Noções básicas de grafos: grafo orientado, não orientado e etiquetado, caminho e comprimento;

      CP14: Caminho mais curto entre dois vértices – Algoritmo de Dijkstra;

      CP15: Algoritmo de Dijkstra (programação).

    • 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
    • Ciência de Dados

      Apresentação

      DocentesManuel M. Pita

      Projetos

      • Dados Complicados – Universidade do País Das Maravilhas

        Descrição
        • Projeto realizado com elevada interacção com o docente, tentando simular um ambiente real
        • Processar conteúdo para varias fontes de dados (bases de dados, ficheiros de texto)Identificar dados estranhos ou inválidosDescobrir quais os dados para considerar com ajuda do "data scientist"
        • Produzir data frames utilizando técnicas de data science

        Conceitos aplicados da Unidade Curricular
        • Bases de Dados
        • Programação
        • Comunicação
        Tecnologias usadas
        • SQL / MySQL
        • Python, Pandas
        • GitHub

      Programa

    • Fundamentos de Engenharia de Dados

      Apresentação

      Esta cadeira aborda uma variedade de tópicos relacionados à engenharia de dados numa perspectiva do Cientista de Dados, desde as diversas fontes de dados até a estrutura e disponibilização dos dados processados para modelos e visualização. Os alunos aprendem os fundamentos conceituais da engenharia de dados que permitem disponibilizar dados com qualidade para utilização em aplicações de ciência de dados.

      DocentesGabriela Soares

      Programa

      A UC está organizada nos seguintes conteúdos programáticos:

      • CP1 – Introdução
        • O que é um Engenheiro de Dados?
        • O que um cientista de dados necessita saber de engenharia de dados?
        • Pipelines de engenharia de dados
      • CP2 – Bases de Dados relacionais
        • Revisão de SQL
        • Conceitos utilizdos em modelos de dados
      • CP3 – Modelagem de dados
        • Fontes de dados
        • Data Lake
        • Data Warehouse
        • Data Lakehouse
        • Modelos de dados
      • CP4 – Fundamentos de Big-data
        • Hadoop
        • MapReduce
      • CP5 – Transformação de dados
        • Transformações necessárias para armazenar os dados para projetos de Data Science
      • CP6 – Ferramentas de visualização de dados
      • CP7 – Bases de dados NoSQL
      • CP8 – Projetos de engenharia de dados
    • Introdução à Inteligência Artificial

      Apresentação

      Esta UC tem como objetivo conferir competências introdutórias no campo da Inteligência Artificial, dotando os alunos de conhecimentos sólidos e estruturados que lhes permitam entender conceitos teóricos e desenvolver código para resolução de problemas práticos de IIA.

      DocentesJoão P. Carvalho

      Programa

      • Noções básicas de IA vários domínios.
      • Procura de caminhos, orientação e navegação: grafos, algoritmos de Dijkstra e A*, grelhas e malhas de navegação, funções de custo.
      • Decisões: árvores de decisão, máquinas de estados, árvores de comportamento, outras abordagens.
      • Aprendizagem: noções básicas, previsão de ações, classificadores de Bayes, outras abordagens.
      • Jogos de tabuleiro: noções básicas, família de algoritmos minimax, MCTS, outras abordagens. 
    2.º Semestre
  • 3.º Ano

    1.º Semestre
    2.º Semestre

Áreas Científicas

  • Outra forma de olhar para o curso e suas disciplinas

    • Matemática e Física

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

    • Arquiteturas e Sistemas Operativos

    • Redes e Telecomunicações

    • Programação e Engenharia de SW

      • 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

        Apresentação

        Esta e¿ uma disciplina fundamental na formac¿a¿o de qualquer profissional da a¿rea de Ciência de Dados pois introduz os conceitos ba¿sicos da programac¿a¿o, sobre os quais assentara¿o muitas disciplinas subsequentes. Mais do que aprender uma linguagem de programac¿a¿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 Python, uma linguagem promissora que combina as melhores caracteri¿sticas das linguagens modernas mais populares.

        Dado ser o primeiro contacto de muitos alunos com o to¿pico da Programac¿a¿o, reveste-se de uma importa¿ncia especial na aquisic¿a¿o de conhecimentos primordiais mas tambe¿m na sua motivac¿a¿o. Mais do que aprender a programar, os alunos aprendem a gostar de programar.

        DocentesBruno Saraiva

        Programa

        OPP

        Herança

        Encapsulmaneto, decorators, variáveis obsfucadas

        Geradores

        Arrays

        Visualização de informação

        Introdução a Algoritmia e Estrutura de Dados

        Objetivos

        O objectivo desta unidade curricular é fornecer aos futuros profissionais na área de ciência de dados as bases para que possam iniciar (de um modo disciplinado) a actividade de programação.
        O aluno continua por desenvolver a capacidade de raciocínio algoritmico 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 Python que lhe permitam criar programas simples de linha de comando.

         

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

    • Interação Humano-Máquina

    • Dados e Inteligência Artificial

      • Algoritmia e Estrutura de Dados

        Apresentação

        Muitos projetos na área da programação envolvem a resolução de problemas computacionais complexos, para os quais soluções rápidas e simplistas podem não ser suficientemente eficientes. Esta UC foca-se na problemática da conceção de bons algoritmos e de como analisar a sua correção e a sua eficiência. Estas são questões particularmente importantes, numa altura a qualidade do software se vem tornado, progressivamente, numa questão central. Trata-se portanto de uma UC particularmente relevante para o ciclo de estudos.

        DocentesManuel M. Pita

        Projetos

        • Dados Complicados – Universidade do País Das Maravilhas

          Projeto realizado com elevada interacção com o docente, tentando simular um ambiente real
          Processar conteúdo para varias fontes de dados (bases de dados, ficheiros de texto)Identificar dados estranhos ou inválidosDescobrir quais os dados para considerar com ajuda do “data scientist”
          Produzir data frames utilizando técnicas de data science

        Programa

        CP1: Complexidade, classes, funções típicas e análise de algoritmos;

        CP2: Complexidade e recursividade (conjunto de problemas recursivos);

        CP3: Algoritmos de pesquisa e seleção;

        CP4: Algoritmos de ordenação: Insertion Sort, Heap Sort, Merge Sort e Quicksort;

        CP5: Comparação dos algoritmos de ordenação quanto à sua complexidade (programação do Quicksort);

        CP6: Tipos abstratos de dados: Pilha e Fila;

        CP7: array circular, listas simples e duplamente ligadas;

        CP8: Implementação de Pilha e Fila (programação em array e / ou listas);

        CP9: Funções de dispersão: aberta e fechada;

        CP10: Tabelas de hash (prática de utilização de Dicionários e Conjuntos);

        CP11: Árvore binária, árvores AVL e árvore preta e vermelha;

        CP12: Árvore binária (programação de árvore binária);

        CP13: Noções básicas de grafos: grafo orientado, não orientado e etiquetado, caminho e comprimento;

        CP14: Caminho mais curto entre dois vértices – Algoritmo de Dijkstra;

        CP15: Algoritmo de Dijkstra (programação).

        Objetivos

        OA1: Analisar e comparar a complexidade de algoritmos;

        OA2: Aplicar a recursividade na resolução de problemas;

        OA3: Explicar e usar alguns dos principais algoritmos de pesquisa, seleção e ordenação;

        OA4: programar algoritmos de ordenação [aplicar o conhecimento (AC)];

        OA5: Explicar e usar os tipos abstratos de dados: Pilha e Fila;

        OA6: Programar uma Pilha e / ou Fila utilizando arrays ou listas (AC);

        OA7: Explicar as funções de dispersão;

        OA8: Usar as estruturas de dados Dicionários e Conjuntos na resolução de problemas (AC);

        OA9: Explicar e usar as estruturas de dados: árvore binária, AVL e preta e vermelha;

        OA10: Programar uma árvore binária (AC);

        OA11: Explicar e dar exemplos da utilização de grafos na resolução de problemas;

        OA12: Programar o algoritmo de Dijkstra (AC).

      • Ciência de Dados

        Apresentação

        DocentesManuel M. Pita

        Projetos

        • Dados Complicados – Universidade do País Das Maravilhas

          Projeto realizado com elevada interacção com o docente, tentando simular um ambiente real
          Processar conteúdo para varias fontes de dados (bases de dados, ficheiros de texto)Identificar dados estranhos ou inválidosDescobrir quais os dados para considerar com ajuda do “data scientist”
          Produzir data frames utilizando técnicas de data science

        Programa

        Objetivos

      • Fundamentos de Ciência de Dados

        Apresentação

        Esta unidade curricular é o primeiro contacto dos alunos com as múltiplas dimensões da ciência de dados. Apresenta conteúdos de “visão global” que serão aprofundados noutras UC, ao longo de toda a licenciatura.

        Nesta UC pretende-se dar ao aluno as visões de diferentes setores: académicos, empresariais e sociais, do uso e da utillidade da ciência de dados. Serão debatidos os seus principios básicos, a sua génese, as relações com outras disciplinas e algumas das suas ferramentes e princípios teóricos, assim como as potenciais implicações éticas da sua aplicação. Pretende-se igualmente levar o aluno a refletir sobre a fonte, o uso e o conhecimento que se pode extrair dos dados, contribuindo para o desenvolvimento da acuidade de pensamento baseado em evidência. 

        DocentesGabriela Soares

        Programa

        CP1 – Introdução à UC

        CP2 – Dados, tipos de dados e manipulação de dados

        • Metadados
        • Enviesamentos
        • Tipos de dados e representações
        • Computação e Armazenamento

        CP3 – Análise Exploratória de Dados

        • Medidas de posição e dispersão
        • Visualização

        CP4 – Modelação de dados, Bases de dados, Extração, Integração e Tratamento de dados

        • Origem dos dados
        • Fontes de dados
        • Extração
        • Dados x Informação
        • Processamento

        CP5 – Aprendizado de Máquina

        • Modelos supervisionados
        • Modelos não supervisionados

        CP6 – Estudo de Caso

        CP7 – Ética para a Ciência de Dados

        CP8 – Projetos em Ciência de Dados – Metodologias

        Objetivos

        Após concluir esta UC com sucesso o aluno deverá ter atingido os seguintes objetivos de aprendizagem (OA):

        OA1. Entender e explicar o que são dados. Distinguir diferentes tipos de dados.   Identificar e classificar fontes de dados.

        OA2. Ser capaz de defender a necessidade, utilidade e valor da aplicação da ciência de dados a problemas científicos, de gestão e sociais, no sentido de descrever e prever problemas e prescrever soluções. 

        OA3. Distinguir a Ciência de Dados de disciplinas afins, identificando semelhanças e diferenças.

        OA4. Examinar as implicações da recolha de dados na ciência, nas empresas e na sociedade, e o respetivo enquadramento ético.

        OA5. Entender as necessidades contextuais de um modelo de análise de dados e ser capaz de desenhar e criar um modelo simples.

      • Fundamentos de Engenharia de Dados

        Apresentação

        Esta cadeira aborda uma variedade de tópicos relacionados à engenharia de dados numa perspectiva do Cientista de Dados, desde as diversas fontes de dados até a estrutura e disponibilização dos dados processados para modelos e visualização. Os alunos aprendem os fundamentos conceituais da engenharia de dados que permitem disponibilizar dados com qualidade para utilização em aplicações de ciência de dados.

        DocentesGabriela Soares

        Programa

        A UC está organizada nos seguintes conteúdos programáticos:

        • CP1 – Introdução
          • O que é um Engenheiro de Dados?
          • O que um cientista de dados necessita saber de engenharia de dados?
          • Pipelines de engenharia de dados
        • CP2 – Bases de Dados relacionais
          • Revisão de SQL
          • Conceitos utilizdos em modelos de dados
        • CP3 – Modelagem de dados
          • Fontes de dados
          • Data Lake
          • Data Warehouse
          • Data Lakehouse
          • Modelos de dados
        • CP4 – Fundamentos de Big-data
          • Hadoop
          • MapReduce
        • CP5 – Transformação de dados
          • Transformações necessárias para armazenar os dados para projetos de Data Science
        • CP6 – Ferramentas de visualização de dados
        • CP7 – Bases de dados NoSQL
        • CP8 – Projetos de engenharia de dados

        Objetivos

        OA1. Compreender os conceitos fundamentais de engenharia de dados.

        OA2. Compreender o ciclo de vida da engenharia de dados.

        OA3. Aprender a utilizar SQL para transformar e consultar dados.

        OA4. Compreender técnicas de modelação de dados para organização e gestão de dados.

        OA5. Construir pipelines para coletar, transformar, analisar e visualizar dados de fontes operacionais de dados.

        OA6. Ser capaz de aplicar os princípios utilizados nas aulas para construir um pipeline completo da coleta à visualização de dados.

      • Introdução à Inteligência Artificial

        Apresentação

        Esta UC tem como objetivo conferir competências introdutórias no campo da Inteligência Artificial, dotando os alunos de conhecimentos sólidos e estruturados que lhes permitam entender conceitos teóricos e desenvolver código para resolução de problemas práticos de IIA.

        DocentesJoão P. Carvalho

        Programa

        • Noções básicas de IA vários domínios.
        • Procura de caminhos, orientação e navegação: grafos, algoritmos de Dijkstra e A*, grelhas e malhas de navegação, funções de custo.
        • Decisões: árvores de decisão, máquinas de estados, árvores de comportamento, outras abordagens.
        • Aprendizagem: noções básicas, previsão de ações, classificadores de Bayes, outras abordagens.
        • Jogos de tabuleiro: noções básicas, família de algoritmos minimax, MCTS, outras abordagens. 

        Objetivos

        1. Domínio das noções básicas de Inteligência Artificial.
        2. Domínio de conceitos básicos e intermédios de movimento inteligente e procura de caminhos.
        3. Domínio de conceitos intermédios e avançados na tomada de decisões através de máquinas de estado, árvores de comportamento, entre outros.
        4. Domínio de tópicos de Inteligência Artificial em jogos de tabuleiro.
        5. Capacidade de resolver problemas envolvendo os conceitos adquiridos, tanto a nível abstrato como ao nível prático (programação).
    • Gestão e Softskills

    • Genérica

  • Objetivos do curso

    (1) garantir que numa metodologia de interação de grupo o aluno adquira a aptidão de trabalho em equipe. (2) garantir uma formação técnica diversa e consistente em técnicas de vanguarda e que adicionalmente lhe garanta uma maior fluidez na aquisição e desenvolvimento de novas técnicas que vai encontrar no futuro. (3) desenvolver a capacidade e habilidade de uma metodologia de trabalho que façam face à exigência de apresentar resultados rápidos e rigorosos na sua qualidade.

  • Competências adquiridas

    (1) completar os ciclos de análise experimental; (2) obter resultados de qualidade científica com fluidez; (3) saber integrar-se e trabalhar em equipas multidisciplinares, (4) boa capacidade de síntese a apresentar resultados.

  • Destinatários

    Este ciclo de estudos destina-se a candidatos com bases em áreas de Informática, Estatística, Física, Matemática, Gestão, Ciências Economias e Financeiras ou afins, que queiram adquirir competências na área de Ciência de Dados.

  • Ligação com o meio empresarial

  • Oportunidades de carreira

    – Data Scientist / Cientista de Dados
    – Applied Data Scientist / Cientista de dados Aplicado
    – Applied Data Researcher / Investigador de Dados Aplicado
    – Applied Machine Learning Researcher / Investigador de Aprendizagem Automatizada Aplicada
    – Business Intelligence Analyst / Analista de Inteligência de Negócio

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.