Official Code: | 6026 |
Acronym: | M:CC |
Description: | The Master’s in Computer Science provides high quality, advanced training to professionals and investigators of a range of specialisations with the field of Computer Science |
The purpose of this course is to provide students with:
Information technology plays a fundamental role in society today. It is, therefore, important to understand and reason about social and ethical issues that its use raises.
The main objectives of this course are:
Esta UC é dedicada ao desenho de algoritmos para problemas computacionais, e como raciocinar de forma clara sobre a sua correção e tempo de execução. O principal objectivo é dotar os alunos das ferramentas intelectuais necessárias para que sejam capazes de desenhar e analisar os seus próprios algoritmos para problemas que precisem de resolver no futuro.
Proporcionar conhecimentos para a análise e processamento digital de sinais estocásticos, abordando de uma forma global a modelação, a estimação espectral e a filtragem óptima e adaptativa.
Dotar os estudantes do conhecimento teórico e prático dos modelos de computação orientados para arquiteturas paralelas e distribuídas. Será dada ênfase ao desenvolvimento de competências de programação para memória distribuída com o MPI, e de programação em memória partilhada com processos, threads e OpenMP.
A criptografia evoluiu nas últimas décadas, de um mais ou menos obscuro ramo do conhecimento usado essencialmente por militares e espiões, para uma componente essencial das comunicações e escrita de software. Com a virtualização de um grande conjunto de actividades, foi necessário usar a criptografia para assegurar todo um conjunto de propriedades e garantias que as correspondentes transacções presenciais podiam assegurar de outra forma. Hoje, a criptografia desempenha por isso um papel essencial tanto nos protocolos da Internet como nos restantes sistemas de comunicações digitais.
Pretende-se assim:
1. Introduzir a problemática da segurança das redes e sistemas informáticos assim como o problema da segurança em geral.
2. Apresentar um conjunto suficientemente expressivo de protocolos criptográficos que permitam geralmente transcrever as actividades sociais do mundo físico para o suporte digital.
3. Estudo de alguns algoritmos criptográficos, suas aplicações e possíveis ataques.
Esta disciplina tem como objetivos principais fazer uma introdução às principais metodologias de data science, e também fornecer conhecimentos sobre programação e sistemas utilizados para a análise de dados, tais como a linguagem R.
Pretende-se que os estudantes adquiram:
a) conhecimentos sobre a recolha organizada de informação
b) técnicas e modelos estatísticos comummente usados no tratamento de dados do âmbito da Ciência e da Engenharia, e saibam aplicá-los adequadamente em R/SPSS
c) capacidade para saber escolher e aplicar as técnicas e modelos estatísticos aprendidos a problemas concretos
d) espírito crítico e capacidade de interpretação dos resultados obtidos por aplicação das técnicas e modelos estatísticos aprendidos.
Estudo de modelos formais semânticos de linguagens de programação, de forma a compreender os mecanismos envolvidos na definição, desenho e implementação de linguagens de programação.
Sensibilizar e partilhar com os alunos as capacidades e competências necessárias, em termos de conhecimentos, aptidões, ferramentas e técnicas, que permitam ultrapassar e resolver de forma eficaz os inúmeros problemas que surgem na gestão e desenvolvimento de projectos informáticos em equipa numa organização real.
Esta unidade curricular tem por objetivo geral introduzir os alunos aos documentos estruturados e ao seu processamento, sendo abordados o XML e JSON como formalismos de estruturação de documentos, com enfase no primeiro.
Compreenção dos princípios fundamentais do funcionamento das redes de comunicações móveis, focando: os aspectos tecnológicos mais relevantes; as redes locais sem fios; as redes de comunicações móveis de 2ª, 3ª, 4ª e 5a geração; e os principais serviços em redes de comunicações móveis.
Possibilitar aos alunos uma introdução aos problemas fundamentais no desenho e na implementação de sistemas distribuídos. Ao
completarem esta unidade curricular, os alunos deverão ser capazes de:
(a) explicar o que é um sistema distribuído e quais as vantagens e propriedades desejáveis de tais sistemas;
(b) descrever os princípios subjacentes ao funcionamento de sistemas distribuídos, os problemas e desafios
associados, e avaliar a eficácia e limitações das suas soluções;
(c) construir sistemas funcionais utilizando mecanismos de comunicação como sockets, RMI e Serviços Web.
O objectivo da disciplina de Teoria da Informação é expor conceitos fundamentais relacionados com teoria da informação e as suas aplicações em sistemas e redes de comunicações e ciência de computadores.
O objetivo da disciplina é o de aprofundar alguns tópicos selecionados das redes de dados. Os assuntos vão de redes sem fios, mobilidade, tecnologias nos operadores a alguns propostas de investigação. A exposição teórica é complementada com trabalhos laboratoriais nos temas abordados, de modo ao estudante consolidar a teoria apreendida com a sua aplicação.
COVID-19: Atividades Letivas à Distância
Devido a esta situação os critérios de avaliação foram alterados. Verifique por favor na parte da avaliação.
A Bioinformática é um campo do conhecimento interdisciplinar que combina as ciências da computação, a biologia e ciências biomédicas e a estatística. A Bioinformática é orientada à aplicação e desenvolvimento de novos métodos computacionais para expandir o conhecimento biológico, biomédico ou epidemiológico. Os recentes desenvolvimentos nas tecnologias de alto-débito levaram a uma grande revolução na investigação biológica e biomédica e onde hoje a bioinformática assume um papel cada vez mais central na análise de grandes quantidades de dados.
Este curso vai-se focar nos principais algoritmos desenvolvido para responder a tarefas bioinformáticas. Será dado ênfase em algoritmos de processamento e análise de sequências, quer sejam sequências nucleotídicas (exemplo DNA ou RNA) ou sequências de aminoácidos (proteínas).
O objetivo deste curso é de que os estudantes sejam capazes de entender como funcionam estes algoritmos e como podem ser desenvolvidos e aplicados para responder a novos desafios computacionais na análise de sequências biológicas.
Nesta unidade curricular pretende-se expôr aos alunos técnicas que provem ou sugiram que não existem métodos eficientes para resolver alguns problemas importantes em Ciência de Computadores com impacto na vida real (nomeadamente a factorização). Neste sentido é feito um estudo teórico de várias classes de complexidade, das relações entre elas, tais como: P, NP, co-NP, PSPACE, NL, PH, RP, BPP, e IP. Ênfase especial será dada ao papel da aleatoridade no desempenho de vários algoritmos.
O programa proposto é leccionado nas aulas teóricas onde os principais conceitos são introduzidos e são apresentados exemplos aplicáveis relacionados com filme, jogos e aplicações na medicina. Nos laboratórios os alunos resolverão trabalhos práticos relacionados com os conceitos apresentados nas aulas práticas, implementando soluções em C++ ou Python utilizando o OpenGL. Os alunos devem demonstrar a capacidade de compreender os tópicos avançados ao apresentar um artigo relacionado com um dos temas apresentado nas aulas teóricas. Os objectivos da aprendizagem serão integrados num projecto desenvolvidos nos laboratórios.
Fornecer aos estudantes fundamentos teóricos e técnicas práticas de implementação de linguagens de programação declarativas.
Introduzir os conceitos e métodos fundamentais de classificação supervisionada e não supervisionada.
Disciplina introdutória aos processos estocásticos. Pretende-se apresentar um conjunto de ferramentas para a descrição e análise de processos estocásticos em áreas diversificadas, como processamento de sinal, teoria da informação, ambiente, economia e finanças, biologia e medicina. A orientação da disciplina privilegia a compreensão dos conceitos e métodos e a sua aplicação em áreas interdisciplinares utilizando dados simulados ou reais.
Introduzir os conceitos fundamentais sobre sistemas embutidos e fornecer aos alunos as competências necessárias ao desenvolvimento de aplicações para estas plataformas.
Apresentar aos alunos as capacidades e limitações destes sistemas e a razão da sua disseminação e utilização em variados ambientes.
Introduzir os alunos ao desenvolvimento nestas plataformas, potenciando o trabalho de equipa e a organização da mesma.
Aprender conceitos avançados de Bases de Dados, que passem pela inclusão da utilização de bases de dados relacionais em ambiente de linguagens de programação genéricas. Os alunos aprendem com especial ênfase as "Application Programming Interfaces" APIs em linguagem C de sistemas de gestão de bases de dados como o MySQL. Desenvolvem capacidade de aumentar tais sistemas através de módulos escritos em C.
Aprendem-se ainda conceitos de bases de dados espaciais, estudando-se o módulo PostGIS. Aprende-se SQL com extensões espaciais.
Aprendem-se conceitos de Data Warehousing e operadores avançados de agregação.
Esta UC é dedicada ao desenho de algoritmos para problemas computacionais, e como raciocinar de forma clara sobre a sua correção e tempo de execução. O principal objectivo é dotar os alunos das ferramentas intelectuais necessárias para que sejam capazes de desenhar e analisar os seus próprios algoritmos para problemas que precisem de resolver no futuro.
Proporcionar conhecimentos para a análise e processamento digital de sinais estocásticos, abordando de uma forma global a modelação, a estimação espectral e a filtragem óptima e adaptativa.
Dotar os estudantes do conhecimento teórico e prático dos modelos de computação orientados para arquiteturas paralelas e distribuídas. Será dada ênfase ao desenvolvimento de competências de programação para memória distribuída com o MPI, e de programação em memória partilhada com processos, threads e OpenMP.
A criptografia evoluiu nas últimas décadas, de um mais ou menos obscuro ramo do conhecimento usado essencialmente por militares e espiões, para uma componente essencial das comunicações e escrita de software. Com a virtualização de um grande conjunto de actividades, foi necessário usar a criptografia para assegurar todo um conjunto de propriedades e garantias que as correspondentes transacções presenciais podiam assegurar de outra forma. Hoje, a criptografia desempenha por isso um papel essencial tanto nos protocolos da Internet como nos restantes sistemas de comunicações digitais.
Pretende-se assim:
1. Introduzir a problemática da segurança das redes e sistemas informáticos assim como o problema da segurança em geral.
2. Apresentar um conjunto suficientemente expressivo de protocolos criptográficos que permitam geralmente transcrever as actividades sociais do mundo físico para o suporte digital.
3. Estudo de alguns algoritmos criptográficos, suas aplicações e possíveis ataques.
Esta disciplina tem como objetivos principais fazer uma introdução às principais metodologias de data science, e também fornecer conhecimentos sobre programação e sistemas utilizados para a análise de dados, tais como a linguagem R.
Pretende-se que os estudantes adquiram:
a) conhecimentos sobre a recolha organizada de informação
b) técnicas e modelos estatísticos comummente usados no tratamento de dados do âmbito da Ciência e da Engenharia, e saibam aplicá-los adequadamente em R/SPSS
c) capacidade para saber escolher e aplicar as técnicas e modelos estatísticos aprendidos a problemas concretos
d) espírito crítico e capacidade de interpretação dos resultados obtidos por aplicação das técnicas e modelos estatísticos aprendidos.
Estudo de modelos formais semânticos de linguagens de programação, de forma a compreender os mecanismos envolvidos na definição, desenho e implementação de linguagens de programação.
Sensibilizar e partilhar com os alunos as capacidades e competências necessárias, em termos de conhecimentos, aptidões, ferramentas e técnicas, que permitam ultrapassar e resolver de forma eficaz os inúmeros problemas que surgem na gestão e desenvolvimento de projectos informáticos em equipa numa organização real.
Esta unidade curricular tem por objetivo geral introduzir os alunos aos documentos estruturados e ao seu processamento, sendo abordados o XML e JSON como formalismos de estruturação de documentos, com enfase no primeiro.
Compreenção dos princípios fundamentais do funcionamento das redes de comunicações móveis, focando: os aspectos tecnológicos mais relevantes; as redes locais sem fios; as redes de comunicações móveis de 2ª, 3ª, 4ª e 5a geração; e os principais serviços em redes de comunicações móveis.
Possibilitar aos alunos uma introdução aos problemas fundamentais no desenho e na implementação de sistemas distribuídos. Ao
completarem esta unidade curricular, os alunos deverão ser capazes de:
(a) explicar o que é um sistema distribuído e quais as vantagens e propriedades desejáveis de tais sistemas;
(b) descrever os princípios subjacentes ao funcionamento de sistemas distribuídos, os problemas e desafios
associados, e avaliar a eficácia e limitações das suas soluções;
(c) construir sistemas funcionais utilizando mecanismos de comunicação como sockets, RMI e Serviços Web.
O objectivo da disciplina de Teoria da Informação é expor conceitos fundamentais relacionados com teoria da informação e as suas aplicações em sistemas e redes de comunicações e ciência de computadores.
O objetivo da disciplina é o de aprofundar alguns tópicos selecionados das redes de dados. Os assuntos vão de redes sem fios, mobilidade, tecnologias nos operadores a alguns propostas de investigação. A exposição teórica é complementada com trabalhos laboratoriais nos temas abordados, de modo ao estudante consolidar a teoria apreendida com a sua aplicação.
COVID-19: Atividades Letivas à Distância
Devido a esta situação os critérios de avaliação foram alterados. Verifique por favor na parte da avaliação.
A Bioinformática é um campo do conhecimento interdisciplinar que combina as ciências da computação, a biologia e ciências biomédicas e a estatística. A Bioinformática é orientada à aplicação e desenvolvimento de novos métodos computacionais para expandir o conhecimento biológico, biomédico ou epidemiológico. Os recentes desenvolvimentos nas tecnologias de alto-débito levaram a uma grande revolução na investigação biológica e biomédica e onde hoje a bioinformática assume um papel cada vez mais central na análise de grandes quantidades de dados.
Este curso vai-se focar nos principais algoritmos desenvolvido para responder a tarefas bioinformáticas. Será dado ênfase em algoritmos de processamento e análise de sequências, quer sejam sequências nucleotídicas (exemplo DNA ou RNA) ou sequências de aminoácidos (proteínas).
O objetivo deste curso é de que os estudantes sejam capazes de entender como funcionam estes algoritmos e como podem ser desenvolvidos e aplicados para responder a novos desafios computacionais na análise de sequências biológicas.
Nesta unidade curricular pretende-se expôr aos alunos técnicas que provem ou sugiram que não existem métodos eficientes para resolver alguns problemas importantes em Ciência de Computadores com impacto na vida real (nomeadamente a factorização). Neste sentido é feito um estudo teórico de várias classes de complexidade, das relações entre elas, tais como: P, NP, co-NP, PSPACE, NL, PH, RP, BPP, e IP. Ênfase especial será dada ao papel da aleatoridade no desempenho de vários algoritmos.
O programa proposto é leccionado nas aulas teóricas onde os principais conceitos são introduzidos e são apresentados exemplos aplicáveis relacionados com filme, jogos e aplicações na medicina. Nos laboratórios os alunos resolverão trabalhos práticos relacionados com os conceitos apresentados nas aulas práticas, implementando soluções em C++ ou Python utilizando o OpenGL. Os alunos devem demonstrar a capacidade de compreender os tópicos avançados ao apresentar um artigo relacionado com um dos temas apresentado nas aulas teóricas. Os objectivos da aprendizagem serão integrados num projecto desenvolvidos nos laboratórios.
Fornecer aos estudantes fundamentos teóricos e técnicas práticas de implementação de linguagens de programação declarativas.
Introduzir os conceitos e métodos fundamentais de classificação supervisionada e não supervisionada.
Disciplina introdutória aos processos estocásticos. Pretende-se apresentar um conjunto de ferramentas para a descrição e análise de processos estocásticos em áreas diversificadas, como processamento de sinal, teoria da informação, ambiente, economia e finanças, biologia e medicina. A orientação da disciplina privilegia a compreensão dos conceitos e métodos e a sua aplicação em áreas interdisciplinares utilizando dados simulados ou reais.
Introduzir os conceitos fundamentais sobre sistemas embutidos e fornecer aos alunos as competências necessárias ao desenvolvimento de aplicações para estas plataformas.
Apresentar aos alunos as capacidades e limitações destes sistemas e a razão da sua disseminação e utilização em variados ambientes.
Introduzir os alunos ao desenvolvimento nestas plataformas, potenciando o trabalho de equipa e a organização da mesma.
Aprender conceitos avançados de Bases de Dados, que passem pela inclusão da utilização de bases de dados relacionais em ambiente de linguagens de programação genéricas. Os alunos aprendem com especial ênfase as "Application Programming Interfaces" APIs em linguagem C de sistemas de gestão de bases de dados como o MySQL. Desenvolvem capacidade de aumentar tais sistemas através de módulos escritos em C.
Aprendem-se ainda conceitos de bases de dados espaciais, estudando-se o módulo PostGIS. Aprende-se SQL com extensões espaciais.
Aprendem-se conceitos de Data Warehousing e operadores avançados de agregação.
Esta UC é dedicada ao desenho de algoritmos para problemas computacionais, e como raciocinar de forma clara sobre a sua correção e tempo de execução. O principal objectivo é dotar os alunos das ferramentas intelectuais necessárias para que sejam capazes de desenhar e analisar os seus próprios algoritmos para problemas que precisem de resolver no futuro.
Proporcionar conhecimentos para a análise e processamento digital de sinais estocásticos, abordando de uma forma global a modelação, a estimação espectral e a filtragem óptima e adaptativa.
Dotar os estudantes do conhecimento teórico e prático dos modelos de computação orientados para arquiteturas paralelas e distribuídas. Será dada ênfase ao desenvolvimento de competências de programação para memória distribuída com o MPI, e de programação em memória partilhada com processos, threads e OpenMP.
A criptografia evoluiu nas últimas décadas, de um mais ou menos obscuro ramo do conhecimento usado essencialmente por militares e espiões, para uma componente essencial das comunicações e escrita de software. Com a virtualização de um grande conjunto de actividades, foi necessário usar a criptografia para assegurar todo um conjunto de propriedades e garantias que as correspondentes transacções presenciais podiam assegurar de outra forma. Hoje, a criptografia desempenha por isso um papel essencial tanto nos protocolos da Internet como nos restantes sistemas de comunicações digitais.
Pretende-se assim:
1. Introduzir a problemática da segurança das redes e sistemas informáticos assim como o problema da segurança em geral.
2. Apresentar um conjunto suficientemente expressivo de protocolos criptográficos que permitam geralmente transcrever as actividades sociais do mundo físico para o suporte digital.
3. Estudo de alguns algoritmos criptográficos, suas aplicações e possíveis ataques.
Esta disciplina tem como objetivos principais fazer uma introdução às principais metodologias de data science, e também fornecer conhecimentos sobre programação e sistemas utilizados para a análise de dados, tais como a linguagem R.
Pretende-se que os estudantes adquiram:
a) conhecimentos sobre a recolha organizada de informação
b) técnicas e modelos estatísticos comummente usados no tratamento de dados do âmbito da Ciência e da Engenharia, e saibam aplicá-los adequadamente em R/SPSS
c) capacidade para saber escolher e aplicar as técnicas e modelos estatísticos aprendidos a problemas concretos
d) espírito crítico e capacidade de interpretação dos resultados obtidos por aplicação das técnicas e modelos estatísticos aprendidos.
Estudo de modelos formais semânticos de linguagens de programação, de forma a compreender os mecanismos envolvidos na definição, desenho e implementação de linguagens de programação.
Sensibilizar e partilhar com os alunos as capacidades e competências necessárias, em termos de conhecimentos, aptidões, ferramentas e técnicas, que permitam ultrapassar e resolver de forma eficaz os inúmeros problemas que surgem na gestão e desenvolvimento de projectos informáticos em equipa numa organização real.
Esta unidade curricular tem por objetivo geral introduzir os alunos aos documentos estruturados e ao seu processamento, sendo abordados o XML e JSON como formalismos de estruturação de documentos, com enfase no primeiro.
Compreenção dos princípios fundamentais do funcionamento das redes de comunicações móveis, focando: os aspectos tecnológicos mais relevantes; as redes locais sem fios; as redes de comunicações móveis de 2ª, 3ª, 4ª e 5a geração; e os principais serviços em redes de comunicações móveis.
Possibilitar aos alunos uma introdução aos problemas fundamentais no desenho e na implementação de sistemas distribuídos. Ao
completarem esta unidade curricular, os alunos deverão ser capazes de:
(a) explicar o que é um sistema distribuído e quais as vantagens e propriedades desejáveis de tais sistemas;
(b) descrever os princípios subjacentes ao funcionamento de sistemas distribuídos, os problemas e desafios
associados, e avaliar a eficácia e limitações das suas soluções;
(c) construir sistemas funcionais utilizando mecanismos de comunicação como sockets, RMI e Serviços Web.
O objectivo da disciplina de Teoria da Informação é expor conceitos fundamentais relacionados com teoria da informação e as suas aplicações em sistemas e redes de comunicações e ciência de computadores.
O objetivo da disciplina é o de aprofundar alguns tópicos selecionados das redes de dados. Os assuntos vão de redes sem fios, mobilidade, tecnologias nos operadores a alguns propostas de investigação. A exposição teórica é complementada com trabalhos laboratoriais nos temas abordados, de modo ao estudante consolidar a teoria apreendida com a sua aplicação.
COVID-19: Atividades Letivas à Distância
Devido a esta situação os critérios de avaliação foram alterados. Verifique por favor na parte da avaliação.
A Bioinformática é um campo do conhecimento interdisciplinar que combina as ciências da computação, a biologia e ciências biomédicas e a estatística. A Bioinformática é orientada à aplicação e desenvolvimento de novos métodos computacionais para expandir o conhecimento biológico, biomédico ou epidemiológico. Os recentes desenvolvimentos nas tecnologias de alto-débito levaram a uma grande revolução na investigação biológica e biomédica e onde hoje a bioinformática assume um papel cada vez mais central na análise de grandes quantidades de dados.
Este curso vai-se focar nos principais algoritmos desenvolvido para responder a tarefas bioinformáticas. Será dado ênfase em algoritmos de processamento e análise de sequências, quer sejam sequências nucleotídicas (exemplo DNA ou RNA) ou sequências de aminoácidos (proteínas).
O objetivo deste curso é de que os estudantes sejam capazes de entender como funcionam estes algoritmos e como podem ser desenvolvidos e aplicados para responder a novos desafios computacionais na análise de sequências biológicas.
Nesta unidade curricular pretende-se expôr aos alunos técnicas que provem ou sugiram que não existem métodos eficientes para resolver alguns problemas importantes em Ciência de Computadores com impacto na vida real (nomeadamente a factorização). Neste sentido é feito um estudo teórico de várias classes de complexidade, das relações entre elas, tais como: P, NP, co-NP, PSPACE, NL, PH, RP, BPP, e IP. Ênfase especial será dada ao papel da aleatoridade no desempenho de vários algoritmos.
O programa proposto é leccionado nas aulas teóricas onde os principais conceitos são introduzidos e são apresentados exemplos aplicáveis relacionados com filme, jogos e aplicações na medicina. Nos laboratórios os alunos resolverão trabalhos práticos relacionados com os conceitos apresentados nas aulas práticas, implementando soluções em C++ ou Python utilizando o OpenGL. Os alunos devem demonstrar a capacidade de compreender os tópicos avançados ao apresentar um artigo relacionado com um dos temas apresentado nas aulas teóricas. Os objectivos da aprendizagem serão integrados num projecto desenvolvidos nos laboratórios.
Fornecer aos estudantes fundamentos teóricos e técnicas práticas de implementação de linguagens de programação declarativas.
Introduzir os conceitos e métodos fundamentais de classificação supervisionada e não supervisionada.
Disciplina introdutória aos processos estocásticos. Pretende-se apresentar um conjunto de ferramentas para a descrição e análise de processos estocásticos em áreas diversificadas, como processamento de sinal, teoria da informação, ambiente, economia e finanças, biologia e medicina. A orientação da disciplina privilegia a compreensão dos conceitos e métodos e a sua aplicação em áreas interdisciplinares utilizando dados simulados ou reais.
Introduzir os conceitos fundamentais sobre sistemas embutidos e fornecer aos alunos as competências necessárias ao desenvolvimento de aplicações para estas plataformas.
Apresentar aos alunos as capacidades e limitações destes sistemas e a razão da sua disseminação e utilização em variados ambientes.
Introduzir os alunos ao desenvolvimento nestas plataformas, potenciando o trabalho de equipa e a organização da mesma.
Aprender conceitos avançados de Bases de Dados, que passem pela inclusão da utilização de bases de dados relacionais em ambiente de linguagens de programação genéricas. Os alunos aprendem com especial ênfase as "Application Programming Interfaces" APIs em linguagem C de sistemas de gestão de bases de dados como o MySQL. Desenvolvem capacidade de aumentar tais sistemas através de módulos escritos em C.
Aprendem-se ainda conceitos de bases de dados espaciais, estudando-se o módulo PostGIS. Aprende-se SQL com extensões espaciais.
Aprendem-se conceitos de Data Warehousing e operadores avançados de agregação.
Esta UC é dedicada ao desenho de algoritmos para problemas computacionais, e como raciocinar de forma clara sobre a sua correção e tempo de execução. O principal objectivo é dotar os alunos das ferramentas intelectuais necessárias para que sejam capazes de desenhar e analisar os seus próprios algoritmos para problemas que precisem de resolver no futuro.
Proporcionar conhecimentos para a análise e processamento digital de sinais estocásticos, abordando de uma forma global a modelação, a estimação espectral e a filtragem óptima e adaptativa.
Dotar os estudantes do conhecimento teórico e prático dos modelos de computação orientados para arquiteturas paralelas e distribuídas. Será dada ênfase ao desenvolvimento de competências de programação para memória distribuída com o MPI, e de programação em memória partilhada com processos, threads e OpenMP.
A criptografia evoluiu nas últimas décadas, de um mais ou menos obscuro ramo do conhecimento usado essencialmente por militares e espiões, para uma componente essencial das comunicações e escrita de software. Com a virtualização de um grande conjunto de actividades, foi necessário usar a criptografia para assegurar todo um conjunto de propriedades e garantias que as correspondentes transacções presenciais podiam assegurar de outra forma. Hoje, a criptografia desempenha por isso um papel essencial tanto nos protocolos da Internet como nos restantes sistemas de comunicações digitais.
Pretende-se assim:
1. Introduzir a problemática da segurança das redes e sistemas informáticos assim como o problema da segurança em geral.
2. Apresentar um conjunto suficientemente expressivo de protocolos criptográficos que permitam geralmente transcrever as actividades sociais do mundo físico para o suporte digital.
3. Estudo de alguns algoritmos criptográficos, suas aplicações e possíveis ataques.
Esta disciplina tem como objetivos principais fazer uma introdução às principais metodologias de data science, e também fornecer conhecimentos sobre programação e sistemas utilizados para a análise de dados, tais como a linguagem R.
Pretende-se que os estudantes adquiram:
a) conhecimentos sobre a recolha organizada de informação
b) técnicas e modelos estatísticos comummente usados no tratamento de dados do âmbito da Ciência e da Engenharia, e saibam aplicá-los adequadamente em R/SPSS
c) capacidade para saber escolher e aplicar as técnicas e modelos estatísticos aprendidos a problemas concretos
d) espírito crítico e capacidade de interpretação dos resultados obtidos por aplicação das técnicas e modelos estatísticos aprendidos.
Estudo de modelos formais semânticos de linguagens de programação, de forma a compreender os mecanismos envolvidos na definição, desenho e implementação de linguagens de programação.
Sensibilizar e partilhar com os alunos as capacidades e competências necessárias, em termos de conhecimentos, aptidões, ferramentas e técnicas, que permitam ultrapassar e resolver de forma eficaz os inúmeros problemas que surgem na gestão e desenvolvimento de projectos informáticos em equipa numa organização real.
Esta unidade curricular tem por objetivo geral introduzir os alunos aos documentos estruturados e ao seu processamento, sendo abordados o XML e JSON como formalismos de estruturação de documentos, com enfase no primeiro.
Compreenção dos princípios fundamentais do funcionamento das redes de comunicações móveis, focando: os aspectos tecnológicos mais relevantes; as redes locais sem fios; as redes de comunicações móveis de 2ª, 3ª, 4ª e 5a geração; e os principais serviços em redes de comunicações móveis.
Possibilitar aos alunos uma introdução aos problemas fundamentais no desenho e na implementação de sistemas distribuídos. Ao
completarem esta unidade curricular, os alunos deverão ser capazes de:
(a) explicar o que é um sistema distribuído e quais as vantagens e propriedades desejáveis de tais sistemas;
(b) descrever os princípios subjacentes ao funcionamento de sistemas distribuídos, os problemas e desafios
associados, e avaliar a eficácia e limitações das suas soluções;
(c) construir sistemas funcionais utilizando mecanismos de comunicação como sockets, RMI e Serviços Web.
O objectivo da disciplina de Teoria da Informação é expor conceitos fundamentais relacionados com teoria da informação e as suas aplicações em sistemas e redes de comunicações e ciência de computadores.
O objetivo da disciplina é o de aprofundar alguns tópicos selecionados das redes de dados. Os assuntos vão de redes sem fios, mobilidade, tecnologias nos operadores a alguns propostas de investigação. A exposição teórica é complementada com trabalhos laboratoriais nos temas abordados, de modo ao estudante consolidar a teoria apreendida com a sua aplicação.
COVID-19: Atividades Letivas à Distância
Devido a esta situação os critérios de avaliação foram alterados. Verifique por favor na parte da avaliação.
A Bioinformática é um campo do conhecimento interdisciplinar que combina as ciências da computação, a biologia e ciências biomédicas e a estatística. A Bioinformática é orientada à aplicação e desenvolvimento de novos métodos computacionais para expandir o conhecimento biológico, biomédico ou epidemiológico. Os recentes desenvolvimentos nas tecnologias de alto-débito levaram a uma grande revolução na investigação biológica e biomédica e onde hoje a bioinformática assume um papel cada vez mais central na análise de grandes quantidades de dados.
Este curso vai-se focar nos principais algoritmos desenvolvido para responder a tarefas bioinformáticas. Será dado ênfase em algoritmos de processamento e análise de sequências, quer sejam sequências nucleotídicas (exemplo DNA ou RNA) ou sequências de aminoácidos (proteínas).
O objetivo deste curso é de que os estudantes sejam capazes de entender como funcionam estes algoritmos e como podem ser desenvolvidos e aplicados para responder a novos desafios computacionais na análise de sequências biológicas.
Nesta unidade curricular pretende-se expôr aos alunos técnicas que provem ou sugiram que não existem métodos eficientes para resolver alguns problemas importantes em Ciência de Computadores com impacto na vida real (nomeadamente a factorização). Neste sentido é feito um estudo teórico de várias classes de complexidade, das relações entre elas, tais como: P, NP, co-NP, PSPACE, NL, PH, RP, BPP, e IP. Ênfase especial será dada ao papel da aleatoridade no desempenho de vários algoritmos.
O programa proposto é leccionado nas aulas teóricas onde os principais conceitos são introduzidos e são apresentados exemplos aplicáveis relacionados com filme, jogos e aplicações na medicina. Nos laboratórios os alunos resolverão trabalhos práticos relacionados com os conceitos apresentados nas aulas práticas, implementando soluções em C++ ou Python utilizando o OpenGL. Os alunos devem demonstrar a capacidade de compreender os tópicos avançados ao apresentar um artigo relacionado com um dos temas apresentado nas aulas teóricas. Os objectivos da aprendizagem serão integrados num projecto desenvolvidos nos laboratórios.
Fornecer aos estudantes fundamentos teóricos e técnicas práticas de implementação de linguagens de programação declarativas.
Introduzir os conceitos e métodos fundamentais de classificação supervisionada e não supervisionada.
Disciplina introdutória aos processos estocásticos. Pretende-se apresentar um conjunto de ferramentas para a descrição e análise de processos estocásticos em áreas diversificadas, como processamento de sinal, teoria da informação, ambiente, economia e finanças, biologia e medicina. A orientação da disciplina privilegia a compreensão dos conceitos e métodos e a sua aplicação em áreas interdisciplinares utilizando dados simulados ou reais.
Introduzir os conceitos fundamentais sobre sistemas embutidos e fornecer aos alunos as competências necessárias ao desenvolvimento de aplicações para estas plataformas.
Apresentar aos alunos as capacidades e limitações destes sistemas e a razão da sua disseminação e utilização em variados ambientes.
Introduzir os alunos ao desenvolvimento nestas plataformas, potenciando o trabalho de equipa e a organização da mesma.
Aprender conceitos avançados de Bases de Dados, que passem pela inclusão da utilização de bases de dados relacionais em ambiente de linguagens de programação genéricas. Os alunos aprendem com especial ênfase as "Application Programming Interfaces" APIs em linguagem C de sistemas de gestão de bases de dados como o MySQL. Desenvolvem capacidade de aumentar tais sistemas através de módulos escritos em C.
Aprendem-se ainda conceitos de bases de dados espaciais, estudando-se o módulo PostGIS. Aprende-se SQL com extensões espaciais.
Aprendem-se conceitos de Data Warehousing e operadores avançados de agregação.