Código Oficial: | L227 |
Sigla: | L:IACD |
Descrição: | A Inteligência Artificial (IA) e a Ciência de Dados (CD) estão no centro de uma revolução em todos os setores e na investigação científica. A LIACD é uma iniciativa pioneira da Universidade do Porto, contando com a enorme experiência de docentes da FCUP e da FEUP nestas áreas. O curso vem preencher uma lacuna das ofertas formativas atuais, visando formar profissionais qualificados na área de Inteligência Artificial e Ciência de Dados, com uma forte formação em Ciência de Computadores/Engenharia Informática e sólidos conhecimentos em Matemática. Na LIACD são trabalhadas competências em programação, algoritmia, estatística, métodos numéricos, otimização, aprendizagem computacional, processamento de imagem e de linguagem natural, robótica e sistemas Inteligentes, segurança e privacidade, que permitirão aos licenciados desenvolver trabalho especializado de IA e CD em empresas, organizações e administração pública. |
Ao completar esta unidade curricular, o estudante deve dominar os principais conceitos de Álgebra Linear e Geometria Analítica. Nomeadamente, deve compreender, ser capaz de trabalhar e usar as propriedades dos conceitos de matriz, determinante, espaço vetorial real e função linear.
Familiarizar-se com os conceitos básicos e técnicas do cálculo, a nível de funções reais de uma variável real, bem como sucessões e séries.
Estudo das estruturas discretas fundamentais que estão na base formal da área de Ciência de Computadores/Informática.
Introdução à programação de computadores usando a linguagem Python.
Noções fundamentais de programação: variáveis, tipos, operadores e expressões; funções e procedimentos; instruções condicionais e de seleção; iteração e recursão, leitura e escrita.
Estruturas de dados e algoritmos fundamentais: listas, dicionários, tuplos; pesquisa e processamento de dados, ordenação; problemas e aplicações.
Fornecer aos estudantes uma visão geral sobre a Ciência de Computadores, em particular, sobre os conceitos fundamentais sobre a estrutura e o funcionamento dos computadores digitais e dos sistemas de operacão.
Fornecer aos estudantes os conceitos fundamentais da organização e funcionamento de um computador, nomeadamente, o seu modelo de representação de dados e programas, as suas componentes e interacções, e a forma de avaliar o seu desempenho.
A UC abordará os temas atuais da Inteligência Artificial (IA) e Ciência de Dados (CD), dando aos estudantes um conhecimento técnico, ainda que não aprofundado, sobre os seus conceitos, problemas e aplicações.
Relativamente às áreas de IA e CD os objectivos da UC são:
- Fornecer uma perspetiva histórica do seu surgimento e evolução.
- Identificar a sua relevância e impacto na sociedade atual.
- Estudar a relação com outras ciências e as interações com a sociedade.
- Conhecer as diferentes etapas dos processos de desenvolvimento.
- Desenvolver pequenos projetos de IA e CD.
Ensinar conceitos e resultados fundamentais sobre três modelos de computação básicos (autómatos finitos, autómatos de pilha e máquinas de Turing) e sobre as classes de linguagens formais associadas, com foco nas linguagens regulares e independentes de contexto.
Introduzir os conceitos fundamentais de programação imperativa enfatizando a noção de algoritmo e de modularidade, tendo por base a linguagem de programação C. Será dada ênfase à resolução prática de problemas, algoritmos básicos de contagem, pesquisa e ordenação, e à qualidade de escrita de código.
Dotar os estudantes da teoria e prática necessária à concepção, construção e análise de bases de dados relacionais.
Pretende-se que o aluno aprenda as noções básicas do raciocínio lógico e seja capaz de utilizar correctamente os sistemas dedutivos; compreenda as relações entre as semânticas e os sistemas dedutivos e a sua caracterização do ponto de vista da decidibilidade; reconheça o papel dos sistemas formais nas várias áreas da Ciência de Computadores.
O objetivo desta UC é dado um problema matemático estudar condições suficientes para a existência e unicidade de solução, escolher um método numérico para a sua resolução, controlar os erros, fornecer um algoritmo a implementar e experimentar em máquina de calcular ou em computador, e interpretar os resultados.
Esta UC faz uma introdução à Aprendizagem Computacional (AC) fornecendo aos estudantes uma breve contextualização histórica e referência a algumas das suas aplicações mais relevantes.
Pretende-se que os estudantes façam um primeiro contacto com várias tarefas e abordagens envolvidas em problemas de AC e que possam, desta forma, identificar as estratégias mais adequadas.
Aprendizagem de técnicas de concepção e análise de algoritmos eficientes.
Aquisição de uma base sólida de conhecimentos em estatística indutiva e desenvolvimento de capacidades e engenho em técnicas de modelação estatística, fundamentais para a apresentação, tratamento e interpretação de conjuntos de dados.
Objectivos: Estudo dos conceitos fundamentais e técnicas de uso mais generalizado da Inteligência Artificial.
Introdução à teoria de circuitos, electrónica analógica básica e sistemas digitais.
A Unidade Curricular visa introduzir aos alunos os princípios fundamentais de criação e desenvolvimento de Interfaces Pessoa-Máquina, focando-se em sistemas interativos. A sua abordagem engloba tanto os conceitos teóricos, tais como usabilidade e design centrado no utilizador, assim como as práticas de prototipagem de baixa e alta fidelidade, através da construção de interfaces gráficas.
A UC apresenta uma perspetiva global das técnicas associadas aos sistemas inteligentes e autónomos, explorando a modelação e simulação de sistemas complexos e o desenvolvimento de aplicações de agentes inteligentes e de Sistemas Multi-Agente (SMA) com capacidade de adaptação/aprendizagem. O objetivo principal é especificar e implementar sistemas inteligentes autónomos, complexos e adaptativos. No final da UC, os estudantes deverão ser capazes de:
1. Compreender conceitos básicos relacionados com sistemas inteligentes autónomos e ser capaz de modelar e projetar sistemas inteligentes e autónomos complexos.
2. Compreender e ser capaz de utilizar conceitos de sistemas inteligentes multiagente tais como a comunicação, interação, coordenação, negociação e cooperação.
3. Compreender e ser capaz de utilizar o conceito de aprendizagem por reforço, incluindo algoritmos atuais e mecanismos de aprendizagem por reforço profunda.
Objetivos: Objetivos: Fornecer aos estudantes metodologias de desenvolvimento de software, de projetos em IA e CD, de trabalho em equipa e de comunicação através da realização de projetos desenhado para o efeito.
Esta unidade curricular tem como objetivo global a compreensão da complexidade das plataformas atuais de programação de dispositivos móveis, de modo a fornecer aos estudantes as ferramentas necessárias para enfrentar os crescentes desafios na área. Como formação complementar, os estudantes são expostos aos requisitos e desafios da implementação de backends de forma a suportar as aplicações móveis.
Pretende-se que os estudantes:
- sejam capazes de projetar e implementar aplicações móveis;
- fiquem a conhecer as implicações do RGPD, evitando alguns dos erros mais comuns em relação à privacidade dos usuários;
- fiquem cientes da necessidade de incluir segurança no desenho das soluções;
- compreendam os compromissos implícitos entre desempenho, consumo de energia e segurança / privacidade
O objetivo desta unidade curricular é familiarizar os alunos com os conceitos e tecnologias utilizados no desenvolvimento de aplicações centradas na web. Isto inclui aprender sobre os diferentes tipos de aplicações web, as diferentes tecnologias que podem ser usadas para construí-las e as melhores práticas para projetar e desenvolver aplicações web.
Estudo e comparação de vários modelos de computação
(Turing-completos), do seu poder computacional e das suas limitações. Estudo das diversas classes de complexidade computacional.
Ao completar este curso espera-se que os alunos
- conheçam os modelos de computação clássicos utilizados no estudo da computabilidade de diversos problemas;
- saibam provar a equivalência de vários modelos Turing-completos;
- conheçam os resultados e métodos mais importantes no estudo da computabilidade e complexidade;
- saibam classificar exemplos concretos de problemas e provar a sua (in)decidibilidade dentro das diversas classes de computabilidade.
- saibam classificar elemplos concretos pelas sua complexidade temporal e interpretar essa classificação.
O objetivo principal é fornecer uma formação sólida sobre concorrência, com particular ênfase nos princípios fundamentais de concorrência e no desenho e implementação de modelos de computação concorrente em arquiteturas de memória partilhada, assim como dos principais problemas inerentes.
Introdução à programação funcional usando a linguagem Haskell.