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.
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.
Introduzir a problemática da segurança das redes e sistemas informáticos assim como o problema da segurança da informção em geral, enquadrando aqui a utilização de primitivas criptográficas.
Estudo das primitivas criptográficas mais relevantes, as garantias de segurança que conferem, as suas aplicações, boas práticas de uso e possíveis ataques.
Apresentar um conjunto suficientemente expressivo de protocolos criptográficos que permitam geralmente transcrever as actividades sociais do mundo físico para o suporte digital.
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.
1. Capacitar o aluno para análises de regressão envolvendo respostas contínuas ou discretas (modelos lineares generalizados)
2. Implementar análises estatísticas num software adequado
3. Promover o espírito crítico num processo de análise de dados (recolha de dados, modelação, interpretação dos resultados, ...)
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.
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.
Pretende-se que os estudantes reconheçam e distingam as propriedades dos diferentes processos estudados, em particular, processos de Poisson, processos de renovamento, cadeias de Markov e movimento Browniano.
Pretende-se que os estudantes desenvolvam capacidades de modelação através da utilização de processos estocásticos mais comuns. Pretende-se ainda que os estudantes consigam simular os vários processos estocásticos estudados assim como utilizar as suas propriedades para responder a determinados problemas concretos.
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 5ª 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/RPC e Serviços Web.
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.
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.
Introduzir os conceitos e métodos fundamentais de classificação supervisionada e não supervisionada.
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.
Aborda-se o conceito de base de dados dedutiva e sistemas de representação de conhecimento.
Aprendem-se ainda conceitos de bases de dados espaciais, estudando-se o módulo PostGIS. Aprende-se SQL com extensões espaciais. Utiliza-se diversas ferramentas de análise e visualização de informação espacial, através da linguagem de programação Python e módulos como o MatPlotLib.
Aprendem-se conceitos de Data Warehousing e operadores avançados de agregação.
Aprendem-se conceitos de bases de dados noSQL.
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.
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.
Introduzir a problemática da segurança das redes e sistemas informáticos assim como o problema da segurança da informção em geral, enquadrando aqui a utilização de primitivas criptográficas.
Estudo das primitivas criptográficas mais relevantes, as garantias de segurança que conferem, as suas aplicações, boas práticas de uso e possíveis ataques.
Apresentar um conjunto suficientemente expressivo de protocolos criptográficos que permitam geralmente transcrever as actividades sociais do mundo físico para o suporte digital.
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.
1. Capacitar o aluno para análises de regressão envolvendo respostas contínuas ou discretas (modelos lineares generalizados)
2. Implementar análises estatísticas num software adequado
3. Promover o espírito crítico num processo de análise de dados (recolha de dados, modelação, interpretação dos resultados, ...)
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.
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.
Pretende-se que os estudantes reconheçam e distingam as propriedades dos diferentes processos estudados, em particular, processos de Poisson, processos de renovamento, cadeias de Markov e movimento Browniano.
Pretende-se que os estudantes desenvolvam capacidades de modelação através da utilização de processos estocásticos mais comuns. Pretende-se ainda que os estudantes consigam simular os vários processos estocásticos estudados assim como utilizar as suas propriedades para responder a determinados problemas concretos.
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 5ª 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/RPC e Serviços Web.
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.
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.
Introduzir os conceitos e métodos fundamentais de classificação supervisionada e não supervisionada.
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.
Aborda-se o conceito de base de dados dedutiva e sistemas de representação de conhecimento.
Aprendem-se ainda conceitos de bases de dados espaciais, estudando-se o módulo PostGIS. Aprende-se SQL com extensões espaciais. Utiliza-se diversas ferramentas de análise e visualização de informação espacial, através da linguagem de programação Python e módulos como o MatPlotLib.
Aprendem-se conceitos de Data Warehousing e operadores avançados de agregação.
Aprendem-se conceitos de bases de dados noSQL.
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.
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.
Introduzir a problemática da segurança das redes e sistemas informáticos assim como o problema da segurança da informção em geral, enquadrando aqui a utilização de primitivas criptográficas.
Estudo das primitivas criptográficas mais relevantes, as garantias de segurança que conferem, as suas aplicações, boas práticas de uso e possíveis ataques.
Apresentar um conjunto suficientemente expressivo de protocolos criptográficos que permitam geralmente transcrever as actividades sociais do mundo físico para o suporte digital.
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.
1. Capacitar o aluno para análises de regressão envolvendo respostas contínuas ou discretas (modelos lineares generalizados)
2. Implementar análises estatísticas num software adequado
3. Promover o espírito crítico num processo de análise de dados (recolha de dados, modelação, interpretação dos resultados, ...)
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.
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.
Pretende-se que os estudantes reconheçam e distingam as propriedades dos diferentes processos estudados, em particular, processos de Poisson, processos de renovamento, cadeias de Markov e movimento Browniano.
Pretende-se que os estudantes desenvolvam capacidades de modelação através da utilização de processos estocásticos mais comuns. Pretende-se ainda que os estudantes consigam simular os vários processos estocásticos estudados assim como utilizar as suas propriedades para responder a determinados problemas concretos.
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 5ª 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/RPC e Serviços Web.
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.
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.
Introduzir os conceitos e métodos fundamentais de classificação supervisionada e não supervisionada.
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.
Aborda-se o conceito de base de dados dedutiva e sistemas de representação de conhecimento.
Aprendem-se ainda conceitos de bases de dados espaciais, estudando-se o módulo PostGIS. Aprende-se SQL com extensões espaciais. Utiliza-se diversas ferramentas de análise e visualização de informação espacial, através da linguagem de programação Python e módulos como o MatPlotLib.
Aprendem-se conceitos de Data Warehousing e operadores avançados de agregação.
Aprendem-se conceitos de bases de dados noSQL.
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.
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.
Introduzir a problemática da segurança das redes e sistemas informáticos assim como o problema da segurança da informção em geral, enquadrando aqui a utilização de primitivas criptográficas.
Estudo das primitivas criptográficas mais relevantes, as garantias de segurança que conferem, as suas aplicações, boas práticas de uso e possíveis ataques.
Apresentar um conjunto suficientemente expressivo de protocolos criptográficos que permitam geralmente transcrever as actividades sociais do mundo físico para o suporte digital.
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.
1. Capacitar o aluno para análises de regressão envolvendo respostas contínuas ou discretas (modelos lineares generalizados)
2. Implementar análises estatísticas num software adequado
3. Promover o espírito crítico num processo de análise de dados (recolha de dados, modelação, interpretação dos resultados, ...)
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.
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.
Pretende-se que os estudantes reconheçam e distingam as propriedades dos diferentes processos estudados, em particular, processos de Poisson, processos de renovamento, cadeias de Markov e movimento Browniano.
Pretende-se que os estudantes desenvolvam capacidades de modelação através da utilização de processos estocásticos mais comuns. Pretende-se ainda que os estudantes consigam simular os vários processos estocásticos estudados assim como utilizar as suas propriedades para responder a determinados problemas concretos.
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 5ª 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/RPC e Serviços Web.
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.
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.
Introduzir os conceitos e métodos fundamentais de classificação supervisionada e não supervisionada.
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.
Aborda-se o conceito de base de dados dedutiva e sistemas de representação de conhecimento.
Aprendem-se ainda conceitos de bases de dados espaciais, estudando-se o módulo PostGIS. Aprende-se SQL com extensões espaciais. Utiliza-se diversas ferramentas de análise e visualização de informação espacial, através da linguagem de programação Python e módulos como o MatPlotLib.
Aprendem-se conceitos de Data Warehousing e operadores avançados de agregação.
Aprendem-se conceitos de bases de dados noSQL.