Back

Computação Paralela e Distribuída

    Detalhes do curso

  • Conhecimentos de Base Recomendados

    É desejável que os estudantes tenham conhecimento prévio de linguagens e ambientes de programação e sistemas operativos incluindo algoritmos de escalonamento. Noções de programação REST para a web devem ser adquiridas se não existentes.

  • Objetivos

    Os estudantes deverão ser capazes de conhecer e compreender as técnicas e paradigmas da computação paralela e distribuída de modo a conceber algoritmos e aplicações multithread que envolvam comunicação entre computadores.
    Enuncia e compara diversas topologias de redes de computadores e descreve corretamente o funcionamento das redes locais (cabeadas ou não) e da Internet e dos paradigmas cliente/servidor e peer-to-peer.
    Enuncia os diversos modelos da computação paralela e da computação distribuída.
    Programa e descreve o funcionamento dum programa que utiliza técnicas de multiprogramação como semáforos.
    Programa aplicações para computadores que façam uso dos recursos do computador de forma eficiente usando e dominando técnicas de multiprogramação e sincronização de threads/processos e programação paralela a partir dum problema.
    Resolve problemas da sua área recorrendo a diferentes abordagens da computação paralela e distribuída.

  • Métodos de Ensino

    Aulas TP: As aulas TP recorrerão à demonstração e resolução de situações potencialmente problemáticas com recurso a meios computacionais, com vista à introdução das diferentes técnicas de programação paralela e distribuída que compõem o conteúdo programático da UC.

    Aulas Práticas: resolução de exercícios de uma forma mais autónoma, num ambiente de desenvolvimento, sendo possível o aluno utilizar o próprio computador se desejar.
    Elaboração de trabalhos práticos ao longo do semestre, certificadores das várias técnicas lecionadas.

  • Estágio(s)

    Não

  • Programa

    Aulas Teórico/Práticas
    1. Introdução à computação paralela
    2. Arquitecturas de sistemas paralelos
    3. Programação com bibliotecas de computação paralela
    4. Introdução aos sistemas distribuídos
    5. Computação paralela vs computação distribuída
    6. Modelos e arquitecturas de sistemas distribuídos
    7. Networking e protocolo TCP/IP
    8. Transacções, falhas e segurança
    9. Web Services e Cloud Computing

    Aulas Laboratoriais
    0. Conceitos importantes da linguagem Python
    1. Vetores e Matrizes em Python
    2. Introdução ao Paralelismo em Python
    3. Utilização de Threads
    4. Utilização de Processos
    5. Pipelining
    6. Pthreads e OpenMP
    7. Aplicações com Sockets
    8. Aplicações com Sockets (continuação)
    9. Webservices
    10. Webservices (continuação)

  • Demonstração de conteúdos

    -

  • Demonstração da metodologia

    -

  • Docente(s) responsável(eis)

    -

  • Bibliografia

    Kai Hwang, Geoffrey C. Fox, Jack J. Dongarra; Distributed and Cloud Computing - From Parallel Processing to the Internet of Things, 2012
    Tanenbaum Andrew; Distributed Systems: Principles and Paradigms, 2017
    C. Lin, L. Snyder; Principles of Parallel Programming, 2009. ISBN: 978-0-321-48790-2
    T. Rauber, G. Runger; Parallel Programming for Multicore and Cluster Systems, 2013. ISBN: 978-3-642-37801-0

  • Código

    INF32208

  • Modo de Ensino

    PRESENCIAL

  • ECTS

    6.0

  • Duração

    Semestral

  • Horas

    30h Práticas e Laboratórios

    23h Teórico-Práticas

Conteúdo atualizado em 21/03/2025 15:46
Visão Geral da Privacidade
Escola Superior de Educação - ESE/IPS

Este site utiliza cookies para lhe oferecer a melhor experiência possível. As informações dos cookies são armazenadas no seu navegador e permitem funcionalidades como reconhecê-lo quando regressa ao nosso site e ajudar a nossa equipa a perceber quais as secções que considera mais interessantes e úteis.

Cookies Estritamente Necessários

Os cookies estritamente necessários devem estar sempre ativados para que possamos guardar as suas preferências de configuração de cookies.

Cookies de Terceiros

Este site utiliza o Google Analytics para recolher informação anónima, como o número de visitantes do site e as páginas mais populares. Manter este cookie ativado ajuda-nos a melhorar o nosso website.