Código Oficial: | L227 |
Sigla: | L:IACD |
Ao completar esta unidade curricular, o estudante deve saber e compreender: a resolução e discussão de sistemas de equações lineares usando o método de Gauss e recorrendo à notação matricial dos sistemas; propriedades no cálculo do determinante de uma matriz quadrada, e conhecendo em particular a sua interpretação em termos de áreas e volumes; os conceitos básicos e resultados fundamentais relativos a espaços vetoriais e a aplicações lineares entre espaços vetoriais de dimensão finita.
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 à utilização de computadores com sistema operativo GNU/Linux.
Introdução à programação de computadores usando a linguagem Python.
Noção de linguagens de baixo nivel e alto nível; interpretadores e compiladores; editores e ambientes de desenvolvimento. Valores, tipos e expressões. Funções e procedimentos. Condições e seleção. Iteração e recursão. Estruturas de dados e algoritmos fundamentais: processamento de sequências, texto, computação numérica.
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 elementares de programação imperativa enfatizando a noção de algoritmo e de modularidade.
Pretende-se que os estudantes:
- sejam capazes de conceber algoritmos para resolução de problemas simples e de os implementar na linguagem de programação C
- fiquem a conhecer alguns algoritmos básicos (contagem, pesquisa, ordenação, ...)
- adquiram bons hábitos de programação.
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, e em particular na área da programação em lógica.
O objetivo desta disciplina é 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.
Aprendizagem de técnicas de concepção e análise de algoritmos eficientes.
Ao completar esta unidade curricular, o estudante deverá
- dominar os conceitos e princípios fundamentais da Estatística, e em particular da Inferência Estatística básica.
- conhecer as técnicas de inferência estatística mais comuns e sabe-las aplicar a problemas concretos;
- ser capaz de identificar e formular matematicamente um problema, de escolher métodos da estatística adequados e de analisar e interpretar de forma crítica os resultados obtidos.
Pretende-se também que o estudante adquira familiaridade com a linguagem de programação R na resolução de problemas.
Objectivos: Estudo dos conceitos fundamentais e técnicas de uso mais generalizado da Inteligência Artificial.
A Unidade Curricular (UC) apresenta os conceitos básicos e técnicas de Análise e Processamento de Sinal, do ponto de vista determinístico e estocástico, incidindo sobretudo na análise no domínio da frequência.
A orientação da UC privilegia a compreensão dos conceitos e métodos, e a sua utilização efectiva na análise de dados simulados e experimentais. É feita uma utilização intensiva de meios computacionais avançados (MATLAB).
Introdução à teoria de circuitos, electrónica analógica básica e sistemas digitais.
A unidade curricular tem por objectivo introduzir aos alunos os conceitos base de criação e desenvolvimento de Interfaces Pessoa-Máquina, nomeadamente, sistemas interactivos. A abordagem é tanto a nível de conceitos teóricos (usabilidade, desenho centrado no utilizador), como práticos (prototipagem de baixa e de alta fidelidade, através da implementaçã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 o conceito de aprendizagem por reforço, incluindo algoritmos atuais e mecanismos de aprendizagem por reforço profunda.
3. 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.
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 um projeto 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 da unidade curricular é a familiarização dos alunos com os conceitos e tecnologias utilizados no desenvolvimento de aplicações centradas na 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 ao paradigma de programação funcional usando a linguagem Haskell.