Informática Descrição: Qualificação e Título – Mestrado em Informática, Mestre. Duração oficial - 2 anos/4 semestres/40 semanas de estudo a tempo inteiro por ano/120 créditos ECTS. Requisitos de acesso – Licenciatura (180 ECTS) em Informática, Engenharia Informática, Ciências da Computação ou formação com reconhecimento Europeu equivalente. Licenciatura (180 ECTS) em área afim (Electrónica,Engenharia de Sistemas, Engenharia de Comunicações, Sistemas de Informação, etc.) ou formação com reconhecimento Europeu equivalente. Requisitos do programa de estudos – O grau de Mestre de Informática visa formar profissionais com uma sólida formação ao nível dos fundamentos e métodos das ciências e tecnologias da computação, capazes de acompanhar e contribuir de forma crítica e criativa o aprofundamento da evolução tecnológica e o alargamento do seu espectro aplicacional. A esta formação visa ainda o curso aliar uma componente de concepção de sistemas assim como desenvolver competências específicas para a persecução de projectos de investigação e desenvolvimento. De uma forma geral, o curso visa ainda o desenvolvimento do espírito crítico, da capacidade de participar e liderar equipas de projecto nesta área assim como o estímulo das capacidades de iniciativa, proposta e inovação. Acesso a um nível de estudos superior - O grau de Mestre permite a candidatura a estudos de doutoramento, nos termos descritos em DGES/Reconhecimento+Académico/Suplemento+ao+Diploma/. Estatuto e Saídas profissionais – Associado ao grau de Mestre de Informática estão duas especialidades livremente escolhidas pelo aluno. Cada uma dessas unidade configura uma proposta de formação coerente numa área aplicacional específica, enunciada na tríplice vertente dos fundamentos, das tecnologias e das aplicações e integrando uma componente horizontal de projecto. O Seminário associado ao projecto de investigação, é baseado num plano de trabalho especificamente desenhado para cada aluno, podendo incluir módulos de formação complementar, métodos de investigação, ética e deontologia profissional, técnicas de expressão oral e escrita e outras componentes orientadas à realização do projecto de investigação. O perfil de formação acima traçado capacita o Mestre de Informática para o exercício de um leque muito amplo de actividades profissionais quer directamente na florescente indústria associada às Tecnologias de Informação, quer em outras componentes da indústria e dos serviços. A formação ministrada torna ainda possível a persecução com êxito de carreiras de índole científico e o acesso ao 3º Ciclo de Formação Superior. Local Funcionamento: Campus de Gualtar, Braga Director: José Bernardo Santos Monteiro Vieira Barros Coordenadores ECTS Paulo Jorge Sousa Azevedo Ano Código 1 Unidade Curricular 000007 Opção I * Análise e Concepção de Software Regime ECTS A 30,0 * Bioinformática * Computação Gráfica * Computação Móvel e Ubíqua * Computação Paralela Distribuída * Criptografia e Segurança de Sistemas de Informação * Engenharia de Aplicações * Engenharia de Linguagens * Engenharia de Redes e Serviços * Métodos Formais em Engenharia de Software * Sistemas Distribuídos * Sistemas Inteligentes * Sistemas de Suporte à Decisão * Tecnologias e Protocolos de Infra-Estrutura 1 000008 Opção II A * Análise e Concepção de Software * Bioinformática * Computação Gráfica * Computação Móvel e Ubíqua * Computação Paralela Distribuída * Criptografia e Segurança de Sistemas de Informação * Engenharia de Aplicações * Engenharia de Linguagens * Engenharia de Redes e Serviços * Métodos Formais em Engenharia de Software * Sistemas Distribuídos * Sistemas Inteligentes * Sistemas de Suporte à Decisão * Tecnologias e Protocolos de Infra-Estrutura 30,0 2 000000 Dissertação A 45,0 2 000335 Seminário S1 15,0 A Opção I e Opção II são constituídas pela mesma lista de UCE opcionais devendo os alunos escolher duas UCE’s diferentes. 000007 - Opção I 000008 – Opção II Lista das Unidades Curriculares de Especialização (UCE’s) opcionais: * Análise e Concepção de Software Regime: A Tipo: Opcional Programa: Pré-requisitos: Resultados de Aprendizagem: Bibliografia: Docentes: Carga Horária: 300 Métodos de Ensino: Métodos de Avaliação: Língua de Instrução: Português Créditos: 30,0 * Bioinformática Regime: A Tipo: Opcional Programa: 1. Biologia Molecular e Celular Armazenamento e transporte de energia nas células. Glicólise, ciclo de Krebs, fosforilação oxidativa. Transportadores de electrões em sistemas biológicos. Mecanismo quimio-osmótico de formação de ATP. Via das pentoses-fosfato. Formação de NADPH e interconversão hexoses/pentoses. Organização dos sistemas vivos. Diferenciação celular. Principais métodos de estudo da célula: métodos citológicos e bioquímicos. Biomembranas: estrutura e função, sistemas de transporte. Núcleo: ultraestrutura, composição, organização e funções. Replicação do DNA. Transcrição, tradução e as moléculas mRNA, tRNA e rRNA. Citosol: composição e principais características. Compartimentação endomembranar. Retículo endoplasmático: funções na síntese lipídica e proteica. Ultraestrutura e função do Complexo de Golgi. Lisossomas. Peroxisomas. Mitocôndria. Citoesqueleto. 2. Engenharia Bioquímica Problemas Fundamentais da Engenharia Bioquímica: papel dos bio-reactores em Biotecnologia; organismos e meios de cultura industriais. Cinética do Crescimento Microbiano: parâmetros de crescimento; análise de dados de crescimento; equação de Monod e outras equações descritivas do crescimento microbiano; taxas específicas de consumo e produção. Variáveis de Estado: biomassa, substrato, produtos, determinação Experimental. Modos de Operação de Reactores Biológicos: cultura em contínuo / quimiostato, cultura em modo semi-contínuo, cultura em descontínuo. Estequiometria das Reacções Microbianas: equação estequiométrica geral, necessidades em carbono e energia. 3. Algoritmos e Tecnologias da Bioinformática Introdução aos conceitos da Bioinformática; Bases de dados biológicas; Algoritmos de alinhamento de sequências e pesquisas em bases de dados por similaridade; Alinhamento múltiplo; Procura de padrões em sequências; Análise filogenética; Clustering de microarrays; Previsão da estrutura e alinhamento estrutural de proteínas. 4. Métodos estatísticos para a Bioinformática Distribuições de Probabilidade. Inferência Estatística. Planeamento de Experiências. Regressão linear. Regressão Logística. Processos estocásticos e modelos de Markov; Métodos estatísticos para a análise de sequências; Aplicações na análise de dados de microarrays. 5. Extracção de Conhecimento em Bases de Dados Biológicas Sistemas de suporte à decisão; Processamento analítico de dados; Data Warehousing; Mineração de Dados e Aprendizagem Máquina: Modelos e algoritmos de classificação e regressão; Indução de árvores de decisão e regras de classificação; Aprendizagem baseada em instâncias. Redes Neuronais Artificiais, Kernel methods e Support Vector Machines. Aplicações na Bioinformática: classificação de dados de microarrays, descoberta de genes, classificação e previsão da estrutura de proteínas, etc. Noções de mineração de texto e aplicações. Pré-requisitos: Lic. 1º ciclo na área da Informática e afins. Resultados de Aprendizagem: - Identificar, definir e descrever estrutural e funcionalmente as principais biomoléculas, vias metabólicas, processos ao nível intra-celular incluindo a síntese proteica. - Identificar e descrever os mecanismos de crescimento microbiano e de mistura e transferência de massa e de calor em reactores biológicos bem como os princípios da Engenharia Metabólica - Identificar os principais problemas na área da Bioinformática e saber seleccionar os algoritmos e as técnicas computacionais mais adequadas, sabendo procurar, utilizar, classificar e avaliar aplicações de software disponível na área da Bioinformática e de Extracção de Conhecimento. - Analisar os resultados e o interpretar o significado biológico de ferramentas de Bioinformática e análise dados biológicos. - Conhecer e ser capaz de desenhar e implementar os principais algoritmos relacionados com a Bioinformática e as técnicas de Aprendizagem Máquina e Mineração de Dados. - Formular e testar hipóteses de acordo com o método estatístico mais adequado no contexto da análise de dados biológicos; Bibliografia: - D. Mount, Bioinformatics: Sequence and genome analysis, Cold Spring Harbor Laboratory Press, New York, 2001. - A. Baxevanis, F. Ouellete (Eds) Bioinformatics: A Practical Guide to the Analysis of Genes and Proteins, Wiley, 2004 - N. C. Jones, P. Pevzner, An Introduction to Bioinformatics Algorithms, MIT Press, 2004 Docentes: Miguel Pereira Rocha (Dep. Informática) Rui Mendes (Dep. Informática) José Teixeira (Dep. Eng. Biológica) Isabel Pereira Rocha (Dep. Eng. Biol.) Rui Oliveira (Dep. Biologia) Pedro Oliveira (Dep. Produção e Sistemas) Carga Horária: 300,0 Métodos de Ensino: Aulas teóricas Aulas práticas em laboratório Estudo individual Trabalho em grupo Trabalho de projecto Métodos de Avaliação: Teste escrito Avaliação contínua dos diversos módulos Projecto integrador Língua de Instrução: Português Créditos: 30,0 * Computação Gráfica Regime: A Tipo: Opcional Programa: A presente UCE organiza-se em torno de 4 módulos temáticos, correspondendo cada um a 5 ECTS, articulados entre si por um 'bus' laboratorial, denominado projecto integrado, que garante a experimentação, a aplicação prática e a integração dos resultados da aprendizagem. Esta estrutura é apresentada na seguinte figura. Os módulos referidos são os seguintes: * Visão por Computador (VC) - 5 ECTS * Realidade Virtual e Aumentada (RVA) - 5 ECTS * Modelação e Visualização (MV) - 5 ECTS * Iluminação e Foto-Realismo (IFR) - 5 ECTS * Projecto Integrado (PI) - 10 ECTS Pré-requisitos: Conhecimentos de programação sólidos e algum conhecimento de Computação Gráfica Resultados de Aprendizagem: Identificar, classificar e utilizar técnicas de processamento de imagem e extracção de conhecimento a partir de imagens; Identificar, classificar e aplicar os principais algoritmos e técnicas, básicas e avançadas, de desenho e desenvolvimento de sistemas e aplicações de realidade virtual e aumentada; Modelar, através de técnicas algorítmicas, permitindo a criação de geometria e materiais; Implementar aplicações gráficas de forma optimizada recorrendo ao CPU e GPU, por exemplo para visualização em tempo real; Analisar, classificar e implementar modelos e algoritmos de iluminação foto-realista; Conceber e avaliar soluções e arquitecturas de aplicações de computação gráfica por forma a obter um elevado nível de qualidade e/ou desempenho de acordo com os requisitos do problema. Bibliografia: "OpenGL Programming Guide", Woo, Neider, Davis and Schneider, Addison Wesley. Referência obrigatória! "Interactive Computer Graphics", Edward Angel, Addison Wesley. Boa introdução. "Real-Time Rendering", Moller and Haines. Boa visão geral do estado da arte. "OpenGL Shading Language", Randi J. Rost. Excelente livro de introdução à programação de shaders em GLSL. Rafael C. Gonzalez; Richard E. Woods; “Digital Image Processing”, Addison Wesley Ramesh Jain, Rangachan Kasturi, Brian G. Schunck, “Machine Vision”; McGraw-HILL Robert M. Haralick, Linda G. Shapiro; “Computer and Robot Vision”, Addison Wesley J.C. Russ; “The Image Processing Handbook”, CRC Press Inc. “Physically Based Rendering: from Theory to Implementation”; Matt Pharr and Greg Humphreys; Morgan Kaufmann; ISBN: 0-12-553180-X; 2004 Web page: http://www.pbrt.org “Spatial Augmented Reality: Merging Real and Virtual Worlds”, Oliver Bimber and Ramesh Raskar, A.K. Peters, 2005. “Virtual Reality Technology”, Grigore Burdea and Pholippe Coiffet, IEEE Press, 2004. Docentes: António Ramires Fernandes Luís Paulo Santos Manuel João Ferreira Adérito Marcos Carga Horária: 300 Métodos de Ensino: Todos os módulos, à excepção de Projecto Integrado têm aulas téoricas de exposição para transmitir os conceitos teóricos, e teórico-práticas para sedimentar os conhecimentos adquiridos. Em Projecto Integrado as aulas são práticas, consistindo em desenvolvimento de projectos, com o acompanhamento dos docentes. Métodos de Avaliação: Provas escritas e trabalhos práticos Língua de Instrução: Português Créditos: 30,0 * Computação Móvel e Ubíqua Regime: A Tipo: Opcional Programa: A UCE30 em Computação móvel e ubíqua encontra-se organizada de acordo com os seguintes módulos: Sistemas de computação ubíqua (5 ECTS), Redes e serviços de comunicações móveis (5 ECTS), Interacção e usabilidade (5 ECTS), Suporte de sistema para ambientes móveis e ubíquos (5 ECTS), Projecto (10 ECTS). Pré-requisitos: Resultados de Aprendizagem: Explicar os fundamentos gerais da computação ubíqua e aplicá-los na concepção, desenvolvimento e operação de sistemas informáticos. Explicar o funcionamento dos principais serviços de comunicações para utilizadores móveis e avaliar a sua utilização em ambientes de mobilidade. Explicar os principais conceitos envolvidos na concepção de interfaces humanocomputador e a sua importância na usabilidade do sistema. Identificar os diferentes tipos de modelos para arquitecturas de software e seleccionar o suporte de sistema mais adequado para o desenvolvimento de uma solução móvel ou ubíqua específica Planear e executar em equipa sistemas móveis ou ubíquos de complexidade média, tendo em conta os vários aspectos multidisciplinares envolvidos e avaliando um conjunto vasto de abordagens e tecnologias alternativas do ponto de vista da sua aplicabilidade num cenário específico. Conceber e aplicar uma estratégia de avaliação de usabilidade no âmbito de um processo de desenvolvimento de um sistema de computação móvel ou ubíqua Bibliografia: Docentes: Rui José Adriano Moreira Pedro Branco Helena Rodrigues Carga Horária: 300 Métodos de Ensino: O plano de formação desta UCE30 integra um conjunto variado de metodologias de ensino com as quais se pretende proporcionar uma experiência de aprendizagem mais rica, capaz de apelar à diversidade de estilos de aprendizagem dos alunos, e maximizar a forte interdependência entre o teórico e o prático que caracteriza a computação móvel e ubíqua. Nesse sentido, e para além do clássico método expositivo que será utilizado na apresentação geral de conceitos, merecem um forte destaque os métodos de aprendizagem activa com especial destaque para a experiência de aprendizagem proporcionada pelo projecto integrador Métodos de Avaliação: Testes escritos, trabalhos práticos, projecto obrigatório. Língua de Instrução: Português Créditos: 30,0 * Computação Paralela Distribuída Regime: A Tipo: Opcional Programa: Sistemas de Computação e Desempenho: (1º sem) evolução recente da arquitectura de processadores: pipeline, superescalaridade, multi-threading, multi-core; hierarquia de memória em ambiente partilhado avaliação de desempenho na execução de aplicações: métricas, profiling, análise e afinação de código (destaque para ciclos iterativos, manuseamento de matrizes e chamada de funções), benchmarking evolução do paralelismo nas arquitecturas: arquitecturas vectoriais, arquitecturas paralelas com memória partilhada e memória distribuída, arquitecturas distribuídas em rede; análise de desempenho em arquitecturas paralelas Planeamento e Administração de Clusters: (1º sem) introdução aos clusters: arquitectura (terminologia, tecnologias, limitações); equipamentos (componentes individuais e de rede, coordenação de recursos descentralizados) Linux para clusters Beowulf: características; instalação e configuração de serviços; segurança planeamento e construção de clusters: missão, arquitectura e suporte lógico; sistemas de ficheiros paralelo; tecnologias de interligação; clonagem e automatização de instalações gestão de clusters: modelos de execução de trabalhos, monitorização e administração de utilizadores e recursos, políticas de escalonamento e contabilização, segurança de dados, análise de desempenho e afinação construção de grids: arquitectura, protocolo e serviços; modelos de utilização e segurança; interfaces de programação estudo de caso (o cluster SEARCH na Universidade do Minho, com Rocks, Ganglia, OpenPBS, Maui, GPFS Paradigmas de Computação Paralela: (2º sem) modelos de programação: fios de execução, passagem de mensagens, objectos distribuídos, workflows metodologias de desenvolvimento de aplicações paralelas: partição, comunicação, agregação e mapeamento de tarefas análise de algoritmos paralelos típicos: pipelining, farming, heartbeat e divide & conquer medição e optimização do desempenho de aplicações em sistemas de memória distribuída escalonamento de recursos ao nível da aplicação Algoritmos e Métodos Numéricos: (2º sem) métodos de Monte Carlo: geradores sequenciais e paralelos de números aleatórios, aplicações do método de Monte Carlo (case studies) multiplicação de matrizes: implementações sequenciais, implementações paralelas no modelo message-passing sistemas de equações lineares: método de eliminação de Gauss, métodos iterativos, análise da convergência, implementações sequenciais e paralelas método das diferenças finitas: resolução numérica das equações diferenciais que ocorrem em certos problemas "clássicos" (vibração de uma corda, difusão de calor) transformada rápida de Fourier: análise de Fourier (introdução), as transformadas DDT (discreta) e FFT, algoritmos sequenciais e paralelos Projecto Integrado: (anual) iniciação ao ambiente de trabalho em cluster computacional e respectivas ferramentas de desenvolvimento de software e de apoio à execução iniciação ao método científico em práticas laboratoriais experimentais e em trabalho de grupo análise experimental de execução de código e consequente avaliação e optimização do desempenho da execução, em ambiente paralelo (multithreading, por passagem de mensagens e híbrido) resolução de problemas computacionais de média complexidade, com requisitos de métodos numéricos. Pré-requisitos: Resultados de Aprendizagem: Bibliografia: Sistemas de Computação e Desempenho: Computer Systems: A Programmer's Perspective (CS:APP), Randal Bryant and David O'Hallaron, Prentice Hall, 2002 Measuring Computer Performance: A Practitioner's Guide, David J. Lilja, Cambridge University Press, 2000 Planeamento e Administração de Clusters: Beowulf Cluster Computing with Linux, William Gropp, Ewing Lusk, Thomas Sterling, 2nd Ed., The MIT Press, 2003 High Performance Linux Clusters with Oscar, Rocks, OpenMosix and MPI, Joseph Sloan, O'Reilly Media, Inc., 2004 Paradigmas de Computação Paralela: Parallel Programming in C with MPI and OpenMP, Michael J. Quinn, McGraw-Hill Education, 2003 Docentes: Alberto José Proença António Pina João Luís Sobral Rui Ralha Carga Horária: 300 Métodos de Ensino: Métodos de Avaliação: A classificação final será uma média ponderada das actividades acima referidas: - realização de 2 testes: no fim de cada semestre, para aferir os conhecimentos e as capacidades intelectuais adquiridos, relativos aos temas leccionados nos módulos temáticos em cada semestre; peso: 20% + 30%; - realização (obrigatória) de um conjunto de trabalhos de análise e de síntese com uma forte componente prática e laboratorial, e contendo a realização de relatórios com apresentação e defesa de trabalhos; peso: 50%; o insucesso nesta componente conduz a não admissão a exame. A observação da atitude e comportamento dos alunos ao longo do semestre (nomeadamente os trabalhos de preparação temática e a participação activa nas sessões de debate/diálogo) reflecte-se na classificação final através da aplicação de bonificações e penalizações. Língua de Instrução: Português Créditos: 30,0 * Criptografia e Segurança de Sistemas de Informação Regime: A Tipo: Opcional Programa: Criptografia e Segurança da Informação (CSI), Segurança de Sistemas Informáticos (SSI), Gestão da Segurança da Informação (GSI), Projecto Integrador (PI) Conceitos fundamentais da criptografia moderna. Introdução às primitivas, esquemas e protocolos criptográficos mais relevantes como blocos construtivos de funcionalidades de segurança em sistemas informáticos. Certificação digital e a utilização de Infrastruturas de Chave Pública. Aplicações correntes/comerciais da criptografia. Aspectos legais da segurança da informação. Privacidade e protecção de dados pessoais. Gestão da confiança. Auditoria e acreditação de segurança. Tópicos de programação segura com ênfase no dimensionamento de privilégios, protecção de dados, ``stack'' e ``sandbox'' de execução. Técnicas, ferramentas e boas práticas de administração na operação segura de sistemas informáticos. Perímetros de segurança como elementos estruturantes na no comparticionamento de acesso e protecção dos recursos do sistema. Redundância, ``fail-over'', salvaguarda e reposição de dados e serviços como técnicas para melhoria da disponibilidade e segurança de operação de sistemas informáticos. Análise forense aplicada à detecção e avaliação de situações de comprometimento de segurança de sistemas. Teoria de Números Computacional (TNC), Técnicas Criptográficas (TC), Segurança de Sistemas Informáticos (SSI), Gestão da Segurança da Informação (GSI), Projecto Integrador (PI) Aspectos da teoria dos números sobre os quais assentam as técnicas criptográficas modernas; teoria dos números elementares, congruências, estruturas algébricas finitas, teoria dos números algébricos. Problemas difíceis que servem como base ao estabelecimento de níveis mínimos de segurança e definição de tamanhos de chaves criptográficas: factorização, logaritmo discreto e outros. Curvas Elípticas e Hiperelípticas. Noções fundamentais da criptografia: computabilidade, conhecimento e aleatoriedade, confiança e provas probabilísticas. Teoria matemática básica: estruturas algébricas relevantes e teoria dos números. Primitivas criptográficas: cifras e sua criptoanálise, sistemas simétricos e sistemas de chave pública, sistemas orientados à identidade. Esquemas criptográficos: modelos e provas de segurança. Técnicas, ferramentas e boas práticas de administração na operação segura de sistemas informáticos. Perímetros de segurança como elementos estruturantes no comparticionamento de acesso e protecção dos recursos do sistema. Redundância, ``fail-over'', salvaguarda e reposição de dados e serviços como técnicas para melhoria da disponibilidade e segurança de operação de sistemas informáticos. Modelos de faltas, Coordenação distribuída, Paradigma transaccional, Comunicação em grupo fiável, Replicação por software. Certificação digital e a utilização de Infrastruturas de Chave Pública. Aspectos legais da segurança da informação, Privacidade e protecção de dados pessoais, Gestão da confiança., Aplicações correntes/comerciais da criptografia. Pré-requisitos: Conhecimentos elementares de matemática e programação exigíveis a qualquer aluno com formação de primeiro ciclo na área das TICs. Resultados de Aprendizagem: - Identificar os problemas da teoria de números mais relevantes à criptografia moderna, e discutir o conceito de problema difícil. neste contexto. - Explicar os objectivos fundamentais da criptografia moderna e reconhecer as primitivas criptográficas que lhes estão associadas. - Explicar o funcionamento interno e as noções de segurança associadas às técnicas criptográficas mais relevantes. - Gerir sistemas de certificação digital e PKI e utilizar aplicações correntes/comerciais da criptografia. - Compreender e explorar o paradigma transaccional e a replicação por software no desenvolvimento de sistemas confiáveis. - Conhecer e dominar as diversas vertentes da administração de sistemas informáticos como forma de assegurar a sua segurança e correcção. - Conhecer, seleccionar e aplicar técnicas de desenvolvimento de aplicações seguras. Bibliografia: * Handbook of Applied Cryptography, Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone, CRC Press 2001. * Applied Cryptography: Protocols, Algorithms and Source Code in C, Bruce Schneier, John Wiley & Sons, Inc. 1995 * Cryptography: Theory and Practice, Douglas R. Stinson, CRC Press. 1995 * A Course in Number Theory and Cryptography (2nd Ed.), Neal Koblitz, SpringerVerlag's Graduate Texts in Mathematics, 1994 Docentes: Manuel Bernardo Barbosa Victor Francisco Fonte José Carlos Bacelar Almeida José Manuel Valença Rui Carlos Oliveira Carga Horária: 300 Métodos de Ensino: A escolaridade associada a esta UCE compreende os módulos temáticos, cada um com uma componente de aulas teóricas e de resolução de problemas, que serão articulados entre si por uma componente laboratorial, denominada Projecto Integrador, que garante a experimentação e aplicação prática dos resultados da aprendizagem. Métodos de Avaliação: A avaliação final da UCE é composta pelas seguintes componentes (todas com nota mínima de 10 valores): * Teste escrito (60%) - No final de cada periodo lectivo (semestre) é realizado um teste escrito. Esses testes são divididos em duas partes, versando cada uma delas os conteúdos dos módulos leccionados. No final do ano é oferecida a possibilidade de realizar um exame de recurso, podendo aí o aluno escolher que componentes (módulos) pretende repetir. * Avaliação do Projecto (30%) - Realizada em dois tempos: no final do primeiro semestre e no final do ano. A apresentação do projecto será acompanhada por um relatório que descreve o trabalho realizado. * Avaliação Seminário (10%) - Consiste numa monografia e numa apresentação (20min.), ambos sobre temas escolhidos pelos candidatos de entre as propostas da equipa docente. O processo de avaliação visa aferir não apenas os conhecimentos e competências mínimas mas também a capacidade revelada na sua integração e aplicação no projecto de engenharia. Assim, é constituída por um exame final único em média pesada com a avaliação contínua laboratorial e o resultado (ferramentas, relatório, apresentação) do projecto integrador. Língua de Instrução: Português Créditos: 30,0 * Engenharia de Aplicações Regime: A Tipo: Optional Programa: Arquitecturas Aplicacionais Multi-camada; Sistemas Interactivos; Administração de Bases de Dados; Infraestrutura de Centros de Dados; Segurança; Projecto Integrado Pré-requisitos: Nenhuns Resultados de Aprendizagem: Analisar e conhecer os principais padrões estruturais e de comportamento utilizados para o desenvolvimento de sistemas de software complexo e de grande escala, tendo em conta as especificidades arquitecturais das aplicações multi-camada. Identificar as principais características dos servidores aplicacionais por forma a escolher o modelo de programação pretendido e saber utilizar tecnologia orientada a serviços como mecanismo de criação de arquitecturas de software parametrizáveis. Desenvolver camadas computacionais que permitam evolução controlada e independente das camadas de apresentação e dados e que permitam a disponibilização de serviços como mecanismo de integração. Compreender e explorar diferentes técnicas de desenvolvimento de camadas interactivas, concebendo interfaces com o utilizador com consideração por aspectos de usabilidade. Desenvolver camadas de apresentação que permitam evolução controlada e independente das camadas de lógica e de dados. Estruturar, avaliar e gerir dados de grande volume, compreendendo conceitos com middleware de acesso a dados, controlo de concorrência e recuperação. Compreender e explicar os compromissos entre custo, desempenho, e confiabilidade na concepção de centros de dados e a sua tradução em tecnologias concretas. Aplicar mecanismos de redundância, virtualização e administração centralizada no desenvolvimento e operação de centros de dados. Compreender os riscos de segurança em aplicações em larga escala e técnicas para os reduzir. Desenvolver de forma integrada a função e concepção e projecto de Engenharia. Bibliografia: Ver página Web da UCE. Docentes: António Nestor Ribeiro António Sousa Francisco Moura José Creissac, Manuel Barbosa. Carga Horária: 300,0 Métodos de Ensino: Aulas teóricas e práticas em laboratório Métodos de Avaliação: Testes escritos, testes práticos, projecto obrigatório (40%) Língua de Instrução: Português Créditos: 30,0 * Engenharia de Linguagens Regime: A Tipo: Opcional Programa: Pré-requisitos: Resultados de Aprendizagem: Bibliografia: Docentes: Carga Horária: 300 Métodos de Ensino: Métodos de Avaliação: Língua de Instrução: Português Créditos: 30,0 1. 2. 3. 4. 5. * Engenharia de Redes e Serviços Regime: A Tipo: Opcional Programa: Unidade Curricular estruturada em 5 Módulos (6 ECTS cada): Segurança em Redes, Gestão de Redes e Serviços, Programação Distribuída em Tempo-Real, Serviços e Sistemas Multimédia, Seminário e Projecto Integrado Pré-requisitos: Não tem Resultados de Aprendizagem: Reconhecer e compreender as actividades inerentes à gestão de redes Efectuar a análise, concepção e desenvolvimento de aplicações em rede em contextos de tempo real Compreender os príncipios, técnicas e algoritmos usados para representação, compressão e processamento de conteúdos multimédia Desenvolver projectos de serviços de comunicação Bibliografia: Mark Rhodes-Ousley, et al. "Network Security: The Complete Reference," 2003. Network Management, MIBs and MPLS: Principles, Design and Impl., S. Morris, Addison Wesley, 2003 Markus Aleksy, Implementing Distributed Systems with Java and CORBA, Springer, 2005 F. Halsall, Multimedia Communications: App., Networks, Protocols and Standards, Addison-Wesley, 2002 Docentes: Bruno Dias António Costa Maria João Nicolau Henrique Santos Carga Horária: 360,0 Métodos de Ensino: As matérias teóricas são expostas aos alunos em períodos de 4x50min (aula teórica). Cada aula incluirá períodos de discussão curtos onde os estudantes poderão comentar as matérias apresentadas e colocar questões. As aulas teóricas são complementadas por três componentes: (i) aulas teórico-práticas; (ii) seminários temáticos e (iii) projecto integrado (trabalho de grupo). Métodos de Avaliação: Os alunos são objecto de avaliação contínua, de acordo com o interesse e trabalho teórico-prático desenvolvido. A classificação final integra componentes de avaliação teórica com peso de 50%, componentes de avaliação teórico-práticas com peso de 20% e ainda o desenvolvimento de um projecto integrado, com peso de 30%. Língua de Instrução: Português Créditos: 30,0 * Métodos Formais em Engenharia de Software Regime: A Tipo: Opcional Programa: Esta unidade organiza-se em 4 módulos temáticos semestrais de 5 ECTS cada um, a saber: (1) MF - Métodos Formais. (2) VTP Verificação e Teste de Programas. (3) PAS: Processos e Arquitecturas de Software. (4) CSI Cálculo de Sistemas de Informação. Estes módulos estão ligados entre si por um projecto de grupo, laboratorial e anual (PI Projecto Integrado, 10 ECTS) que faz a ligação da teoria à prática. Os temas de projectos são propostos pelas empresas que patrocinam a unidade curricular. Classificação ACM de acordo com IEEE/ACM Curriculum Guidelines for Software Engineering: * Software/SOFTWARE ENGINEERING/Metrics --- 2 ECTS * Software/SOFTWARE ENGINEERING/Requirements/Specifications --- 6 ECTS * Software/SOFTWARE ENGINEERING/Software Architectures --- 6 ECTS * Software/SOFTWARE ENGINEERING/Software/Program Verification --- 6 ECTS * Software/SOFTWARE ENGINEERING/Testing and Debugging --- 4 ECTS * Theory of Computation/LOGICS AND MEANINGS OF PROGRAMS/Specifying and Verifying and Reasoning about Programs --- 6 ECTS. Pré-requisitos: * Experiência em programação * Familiaridade com linguagens declarativas (lógicas, funcionais) * Lógica de predicados, cálculo-lambda * Noções de 1º ciclo em matemática discreta (eg. conjuntos, relações, funções). Resultados de Aprendizagem: * Criar, rever, analisar, classificar, animar, testar e transformar modelos abstractos de problemas e sistemas em Engenharia de Software. * Transformar especificações de sistemas de informação complexos em implementações sobre diversos tipos de tecnologias. * Modelar, analisar, classificar e transformar diferentes padrões de interacção, estratégias de modularização (componentes, objectos, serviços) e esquemas de organização arquitectural do software. * Especificar, verificar e validar propriedades de sistemas de software, com a ajuda de ferramentas automáticas de prova assistida. * Planear, executar e avaliar a qualidade de projectos de software, recorrendo a métodos rigorosos e diferentes tecnologias de aplicação. * Desenvolver de forma integrada a função de concepção e projecto em Engenharia. Bibliografia: L*07] Luca Aceto, Anna IngÛlfsdÛttir, Kim Guldstrand Larsen, Jiri Srba Reactive Systems: Modelling, Specification and Verification ISBN-13: 9780521875462, published by Cambridge University Press.; [FL98] J. Fitzgerald and P.G. Larsen. Modelling Systems: Practical Tools and Techniques. Cambridge University Press, 1st edition, 1998. ; [F*05] John Fitzgerald, Peter Gorm Larsen, Paul Mukherjee, Nico Plat, and Marcel Verhoef. Validated Designs for Object-oriented Systems. Springer, New York, 2005. ; [Ja06] Daniel Jackson. Software abstractions : logic, language, and analysis. The MIT Press, Cambridge Mass., 2006. ISBN 0-262-10114-9. ; [Jon86] C. B. Jones. Systematic Software Development Using VDM. (PDF) Series in Computer Science. Prentice-Hall International, 1986. C. A. R. Hoare. ; [Mi99] Robin Milner Communicating and mobile systems: the pi calculus ISBN 052164320, Cambridge University Press, 1999. ; [Ol07] J.N. Oliveira. Data Transformation by Calculation (Post-proceedings version: PDF). In GTTSE 2007 Proceedings, pages 139-198, June 2007. International Summer School, July 2-7. Tutorial slides: (PDF). ; [UK07] Mark Utting, Bruno Legeard Practical Model-Based Testing: A Tools Approach. Morgan Kaufmann, 2007. ISBN-10: 0123725011; ISBN-13: 978-0123725011. ; [SW01] Davide Sangiorgi, David Walker The pi calculus: A Theory of Mobile Processes ISBN 0521781779, Cambridge University Press, 2001. Docentes: Jorge Sousa Pinto José Bernardo Barros José Nuno Oliveira (Coord) Luís Soares Barbosa Manuel Alcino Cunha Maria João Frade Carga Horária: 300 Métodos de Ensino: Aulas teoricas e práticas. Avaliação contínua em aulas de taboratório. Realização de um projecto integrado. Métodos de Avaliação: Provas individuais sem consulta, trabalhos práticos. Projecto de grupo. Língua de Instrução: Português Créditos: 30,0 * Sistemas Distribuídos Regime: A Tipo: Opcional Programa: Esta unidade organiza-se em 6 módulos temáticos: - Fundamentos de Sistemas Distribuídos - Objectos Distribuídos - Sistemas Distribuídos Transaccionais - Sistemas Móveis - Tolerância a Faltas - Sistemas em Grande Escala Estes módulos estão ligados entre si por um projecto de grupo, laboratorial e anual (PI Projecto Integrado, 10 ECTS) que faz a ligação da teoria à prática. Os temas de projectos são propostos pelas empresas que patrocinam a unidade curricular. Pré-requisitos: Conhecimentos de programação concorrente. Resultados de Aprendizagem: Saber analisar problemas na área dos SD compreendendo os pressupostos e compromissos do modelo e solução pretendidos. Saber identificar as potencialidades e limitações da infra-estrutura de computação e comunicação disponível por forma a seleccionar a gama de modelos aplicáveis. Conhecer e explorar algoritmos fundamentais e diversos paradigmas para o desenvolvimento de sistemas e aplicações confiáveis, eficientes e escaláveis. Explorar os mecanismos transaccionais e técnicas de replicação por \emph{software} para a construção de sistemas e aplicações fiáveis e de elevada disponibilidade. Conceber soluções distribuídas capazes de operar em ambientes móveis e/ ou de larga escala, com eventual grande variabilidade dos recursos disponíveis. Conceber, desenvolver e validar aplicações sobre middleware de objectos distribuídos. Desenvolver de forma integrada a função de concepção e projecto em Engenharia. Bibliografia: Distributed Systems: Concepts and Design. Coloris, G., J. Dollimore, and T. Kindberg. Addison-Wesley. Distributed Computing: Principles, Algorithms, and Systems, Ajay D. Kshemkalyani and Mukesh Singhal. Cambridge. Engineering Distributed Objects, Wolfgang Emmerich, 2000 Wiley. Java Concurrency in Practice, Brian Goetz, Tim Peierls, Joshua Bloch, Addison Wesley, 2006. Java.rmi, The Remote Method Invocation Guide, Esmond Pitt, Kathleen McNiff, Addison-Wesley, 2001. Pure CORBA, Fintan Bolton, SAMS, 2001. Programming Erlang, Joe Armstrong, OReilly, 2007. Docentes: Carlos Baquero Moreno José Orlando Pereira Paulo Sérgio Almeida Rui Carlos Oliveira Carga Horária: 300 Métodos de Ensino: Aulas teóricas, teórico-práticas e laboratoriais. Realização de um projecto integrado. Métodos de Avaliação: Provas individuais. Projecto de grupo. Língua de Instrução: Português/Inglês Créditos: 30,0 * Sistemas Inteligentes Regime: A Tipo: Opcional Programa: Módulos: Agentes Inteligentes Bases de Dados, Aprendizagem e Extracção de Conhecimento Computação Natural e Inteligência Evolutiva Sistemas Autónomos Projecto Integrado Pré-requisitos: Lic. 1º ciclo na área da Informática. Resultados de Aprendizagem: Avaliar a adequabilidade de um sistema inteligente para a resolução de problemas. Compreender como usar a informação disponível para implementar sistemas de aprendizagem, selecção de modelos e teste. Compreender as vantagens e desvantagens dos sistemas inteligentes estudados no curso, e decidir qual é o mais apropriado para corporizar uma dada aplicação. Aplicar intelectos virtuais, redes neuronais artificiais, programação genética e evolucionária e “particle swarm” a conjuntos de dados, avaliando o seu desempenho. Compreender a relação entre a complexidade de um modelo e o seu desempenho, utilizando esta informação na definição de uma estratégia para optimizar os sistemas existentes. Desenvolver de forma integrada a função de concepção e projecto em Engenharia. Bibliografia: Rocha, M., Cortez, P., and Neves, J. Análise Inteligente de Dados - Algoritmos e Implementação em Java. FCA, Editora de Informática, LDA. ISBN: 978-972-722-278-0. Portugal, 2008. Russel S., Norvig P., Artificial Intelligence: A Modern Approach, Prentice-Hall, 2nd Ed., 2003, IBSN: 0-13-103805-2. Wooldrige M., An Introduction to Multiagent Systems, John Wiley & Sons, ISBN: 0 47149691X, 2002. Docentes: Cesar Analide José Neves Paulo Novais Victor Alves Carga Horária: 300 Métodos de Ensino: Aulas teóricas Aulas práticas em laboratório Estudo individual Trabalho em grupo Trabalho de projecto Métodos de Avaliação: Avaliação por exame escrito Avaliação por trabalho prático Projecto integrador Provas escritas e trabalhos práticos Língua de Instrução: Português Créditos: 30,0 * Sistemas de Suporte à Decisão Regime: A. Tipo: Opcional. Língua de Instrução: Português. Horas/Semana: 8. Créditos: 30. Métodos de Ensino: - Aulas teóricas e teórico-práticas, aulas práticas em laboratório, seminários ou workshops (8hora/semana). Programa: - Module 1 – Administração e Exploração Avançada de Bases de Dados (5 ECTS). Introdução aos Sistemas de Bases de Dados. O Modelo Relacional. Álgebra Relacional e Cálculo de Predicados. Desenho e Arquitectura de Sistemas de Bases de Dados. A Linguagem SQL. Administração de Bases de Dados. Segurança, Recuperação e Protecção de Dados. Bases de Dados Distribuídas. Novas Áreas Aplicacionais de Bases de Dados. Ferramentas e Ambientes para Sistemas de Bases de Dados. Administração avançada de sistemas de gestão de bases de dados. Reavaliação de projectos de sistemas de bases de dados. - Module 2 – Data Warehousing Systems (5 ECTS). Ambiente e estrutura funcional de um data warehouse. Ciclo de vida e desenvolvimento incremental de um data warehouse. Granularidade, particionamento e estruturação da informação num data warehouse. Projecto de um data warehouse. Modelos de dados para um data warehouse. Projecto e implementação de sistemas de extracção, transporte, transformação e integração de dados. Aplicação de técnicas de workflowing em processo de povoamento de sistemas de data warehousing. Ferramentas de modelação. Sistemas de wrapping. Data warehouse departamentais. Gestão e administração de data warehouses. Implementação de data warehouses em plataformas Cliente/Servidor. Data warehouses distribuídos. - Module 3 – On-Line Analytical Processing (5 ECTS). Fundamentos do processamento analítico de dados. Estruturas de armazenamento de dados para sistemas analíticos. Algoritmos e estruturas de dados para o processamento analítico de dados. Reestruturação dinâmica de cubos. Materialização de vistas. Processamento e materialização distribuída de estruturas multidimensionais de dados. Administração de sistemas de gestão de bases de dados multidimensionais. Elaboração de projectos de sistemas de bases de dados. Descrição de dados multidimensional. Manipulação de dados multidimensional. Definição de critérios de acesso a dados. Manipulação de vistas multidimensionais. Programação de sistemas de interrogação para sistemas de bases de dados multidimensionais. - Module 4 – Data Mining (5 ECTS). Introdução aos sistemas de descoberta de conhecimento. Ciclo de vida da descoberta de conhecimento. Introdução à aprendizagem máquina e mineração de dados. Preparação e preprocessamento de dados. Linguagens e arquitecturas para mineração de dados. Descrição de conceitos. Técnicas e modelos de classificação e de predição. Mineração de regras de associação. Mineração de sequências. Geração e análise de clusters. Mineração de tipos de dados complexos. - Module 5 – Integrated Project (10 ECTS). Desenvolvimento de um projecto de aplicação prática dos conhecimentos adquiridos nos módulos de Administração e Exploração Avançada de Bases de Dados, de Sistemas de Data Warehousing, de Processamento Analítico de Dados e de Mineração de Dados. Métodos de Avaliação: - 1 teste por modulo (mais exame de recurso) e um projecto para o modulo 5. Pré-requisitos: Nenhuns. Resultados de Aprendizagem: No final desta unidade curricular, os alunos deverão ser capazes de: - saber fazer a administração e manipulação de um sistema de bases de dados. - monitorizar e optimizar o desempenho de um sistema de bases de dados. - preparar, projectar, implementar e gerir um sistema de data warehousing. - projectar e implementar mecanismos efectivos para o povoamento de data warehouses – processos de ETL. - projectar, implementar e explorar aplicações OLAP. - projectar e implementar aplicações integrando técnicas de mineração de dados. Bibliografia: - Connolly, T., Begg, C., Database Systems, A Practical Approach to Design, Implementation, and Management , Addison-Wesley, 3ª Edição, 2002. - Garcia-Molina, H., Ullman, J., Widom, J., Database Systems: The Complete Book, Prentice Hall, 2001. - Teorey, T., Database Modeling and Design: The Fundamental Principles, II Ediçao, Morgan Kaufmann, 1994. - Date C., An Introduction to Database Systems , Volume I, VI Edição, AddisonWesley Systems Programming Series, 1996. - Ramakrishman, R., Database Management Systems, McGraw-Hill International Editions, 1998. - Kimball, R., Reeves, L., Ross, M., Thornthwait, W., The Data Warehouse Lifecycle Toolkit - Expert Methods for Designing, Developing, and Deploying Data Warehouses, John Wiley & Sons,1998. - Kimball, R., Caserta, J., The Data Warehouse ETL Toolkit - Practical Techniques for Extracting, Ceaning, Conforming, and Delivering Data, John Wiley & Sons, 2004. - Thomsen, E., OLAP Solutions: Building Multidimensional Information Systems, John Wiley & Sons, 2nd Edition, 2002. - Witten, I., Frank, E., Data Mining (Pratical Machine Learning tools and Techniques), Morgan Kaufmann Publishers, 2005 - Han, J., Kamber, M., Data Mining, Concepts and Techniques, Morgan Kaufmann Publishers, 2006. - Tan, P., Steinbach, M., Kumar, V., Introduction to Data Mining, Pearson Education International Ed edition, 2006. Docentes: Orlando Belo, Paulo Azevedo. 1. 2. 3. 4. 5. * Tecnologias e Protocolos de Infra-Estrutura Regime: A Tipo: Opcional Programa: Unidade Curricular estruturada em 5 Módulos (6 ECTS cada): Tecnologias de Redes de Acesso e Core, Redes de Comunicações sem Fios e Móveis, Redes IP Avançadas, Redes Multi-Serviço, Seminário e Projecto Integrado Pré-requisitos: Não tem Resultados de Aprendizagem: Explicar os principais conceitos teóricos subjacentes às principais tecnologias de acesso e core Identificar e descrever os diversos tipos de redes móveis e sem fios existentes Identificar e discutir as diferenças e conceitos subjacentes aos protocolos IPv4 e IPv6 Compreender os princípios e funcionalidades inerentes à Mobilidade e Qualidade de Serviço em redes IP Desenvolver projectos de engenharia das redes de comunicações fixas e móveis Bibliografia: A. Gumaste and Tony Antony, First Mile Access Networks and Enabling Technologies, Cisco Press, 2004 Yi-Bing Lin, Imrich Chlamtac, Wireless and mobile network architectures, John Wiley & Sons, 2001 William Stallings, Data and Computer Communications, Prentice Hall, 7 ed, 2003 Olivier Hersent, Jean-Pierre Petit, David Gurle, "IP Telephony: Deploying Voice-overIP Protocols", John Wiley & Sons, 2005 Docentes: Alexandre Santos Paulo Carvalho Pedro Sousa Adriano Moreira Carga Horária: 360,0 Métodos de Ensino: As matérias teóricas são expostas aos alunos em períodos de 4x50min (aula teórica). Cada aula incluirá períodos de discussão curtos onde os estudantes poderão comentar as matérias apresentadas e colocar questões. As aulas teóricas são complementadas por três componentes: (i) aulas teórico-práticas; (ii) seminários temáticos e (iii) projecto integrado (trabalho de grupo). Métodos de Avaliação: Os alunos são objecto de avaliação contínua, de acordo com o interesse demonstrado e com o trabalho teórico-prático desenvolvido. A classificação final integra componentes de avaliação teórica com peso de 50%, componentes de avaliação teórico-práticas com peso de 20% e ainda o desenvolvimento de um projecto integrado, com peso de 30%. Língua de Instrução: Português Créditos: 30,0 000000 - Dissertação Regime: A Tipo: Obrigatória Programa: Os estudantes devem realizar trabalho de investigação com vista à apresentação de uma dissertação original na área de Informática sob orientação de um ou mais professores especialistas no tema em questão. Pré-requisitos: Completar com sucesso o primeiro ano do curso, i.e. um total de 60 ECTS (2 UCEs). Resultados de Aprendizagem: Desenvolver competências para realizar trabalho de investigação individual em Informática. Bibliografia: Depende do tema da dissertação. Docentes: Um orientador científico. Eventualmente um co-orientador, se necessário. Carga Horária: 0 (??) Métodos de Ensino: Trabalho individual de investigação sob orientação científica. Métodos de Avaliação: Avaliação e discussão pública de uma dissertação escrita. Língua de Instrução: Português Créditos: 45,0 000335 - Seminário Regime: S1 Tipo: Obrigatória Programa: Conjunto de seminários multi-disciplinares seleccionados em tópicos relacionados com Informática. Desenvolvimento de um projecto tecnológico de aplicação prática. Pré-requisitos: Nenhum. Resultados de Aprendizagem: Promover trabalho de grupo em Informática aplicada. Bibliografia: Depende do tema do projecto. Docentes: Pedro Rangel Henriques (Coordenador) Carga Horária: 24,0 Métodos de Ensino: Seminários interactivos. Desenvolvimento de trabalho de grupo sob supervisão científica. Métodos de Avaliação: Avaliação e discussão pública do projecto final e correspondente relatório final (formato de artigo). Revisão de um projecto em avaliação. Apresentação de um poster do projecto. Língua de Instrução: Português Créditos: 15,0