Mário M. Freire
         Full Professor (Professor Catedrático)

           Department of Computer Science, University of Beira Interior
           Rua Marquês de Ávila e Bolama, 6201-001 Covilhã, Portugal

           E-mail addresses: mfreire(at)computer.org  or  mfreire(at)acm.org  or  mario(at)di.ubi.pt



Serviços e Interfaces para a Cloud / Cloud Services and Interfaces 2019/2020
Licenciatura em Informática Web/ BS in Web Informatics

"Be. If you can not be a pine on the top of a hill, be a bush in the valley but be the best bush to the stream bank. Be a branch if you can not be a tree. If you can not be a branch, be a little grass and give joy to some way. If you can not be a highway, Be just a path, if you can not be the sun, be a star. It is not by size that you will have success or failure ... But be the best in whatever you are."

Pablo Neruda (1904-1973), Chilean poet-diplomat and politician.

Objetivos Gerais, Avaliação e Bibliografia / Course Description, Evaluation and Grading and Bibliography


Objectivos de Aprendizagem / Learning Outcomes
Esta unidade curricular pretende dotar os estudantes de uma perspetiva ampla e integradora da virtualização e da computação na nuvem. No final da unidade curricular o estudante deve ser capaz de sistematizar uma abordagem vertical às diversas tecnologias de virtualização e da computação na nuvem, que ofereça às aplicações e serviços maior flexibilidade, melhor utilização de recursos, maior escalabilidade e adaptabilidade e redução de custos. O estudante deve ser capaz de avaliar escolhas, soluções e compromissos envolvidos no desenvolvimento, utilização e gestão de serviços na nuvem e deve ser capaz de desenvolver aplicações e sistemas, escaláveis e fiáveis para computação na nuvem.
The aim of the course is to provide students with a broad and integrative perspective of virtualization and cloud computing. At the end of the course the student should be able to systematize a vertical approach to the various virtualization and cloud computing technologies that provide applications and services with greater flexibility, better resource utilization, greater scalability and adaptability, and reduced costs. Students should be able to assess the choices, solutions, and commitments involved in the development, use and management of cloud services and must be able to develop scalable and reliable applications and systems for cloud computing.

Programa / Syllabus
Perspetiva sobre a adoção das tecnologias e serviços de computação na nuvem. Conceitos, níveis de implementação e ferramentas de virtualização. Computação na nuvem e modelos de serviços. Análise de plataformas de nuvem públicas. Paradigmas de programação paralela e distribuída. Ambientes de software para computação em nuvem.
Perspective on the adoption of cloud computing technologies and services. Concepts, implementation levels and virtualization tools. Cloud computing and service models. Analysis of public cloud platforms. Paradigms of parallel and distributed programming. Emerging cloud software environments.

Métodos e Critérios de Avaliação / Evaluation and Grading
Teste de avaliação de conhecimentos/Exame: 40%.
Trabalho de síntese: 20%.
Projeto laboratorial ou de campo: 40% (Relatório: 20%, Discussão: 20%).

Teste de avaliação de conhecimentos/Exame: Teste com consulta com duração de 1 hora; Teste constituído por 20 perguntas com 4 opções das quais apenas uma está correta; Respostas erradas não descontam sobre a pontuação dessas questões.
Trabalho de síntese: Trabalho realizado em grupo, sendo cada grupo constituído por 2 estudantes; Deve ser elaborado um relatório sobre um tema para exploração; O relatório será avaliado com base na qualidade, abrangência, profundidade e valor de síntese no contexto do tema.
Projeto laboratorial ou de campo: Trabalho laboratorial realizado em grupo durante as aulas práticas, sendo cada grupo constituído (no máximo) por 2 estudantes. O relatório deste trabalho é apresentado e discutido na aula prática, sendo a nota de cada estudante atribuída individualmente.

Written test/Exam: 40%.
Theorectical work: 20%.
Field or laboratory project: 40%.

Written test/Exam: Test with open book with duration of 1 hour; The test comprises 20 questions with four options of which only one is correct; Wrong answers do not discount on the score of a given question.
Theorectical work: Work to be carried out in a group, each group consisting of 2 students; A report on a theme for exploration should be drawn up; The report will be evaluated based on the quality, breadth, depth and value of synthesis in the context of the theme.
Field or laboratory project: Work to be carried out in group during practical lectures, each group consisting of 2 students. The report of this work is presented and discussed in a practical lecture, being each student grade assigned individually.

Trabalho de síntese/Theorectical work
Tema 1 – Plataformas para Processamento de Big Data Streams
Tema 2 – Functions-as-a-Service
Cada grupo deve escolher um destes dois temas e elaborar um breve relatório, no qual, de forma clara, rigorosa e pedagógica, descreve o objecto de estudo e eventuais perspectivas de desenvolvimento futuro do tema escolhido. O relatório deve ter uma organização que o grupo considere adequada, deve ser escrito usando o template do IEEE disponível na parte relativa ao Projeto Laboratorial e deve ter, no máximo, 8 páginas . O relatório deve ser enviado por email, para o endereço mario@di.ubi.pt e com subject SIC 2019/2020 – Trabalho de Síntese até às 23:59 do último dia de aulas do semestre.

Projeto Laboratorial
Enunciado do Projeto Laboratorial – Desenvolvimento e instalação de uma aplicação num ambiente em nuvem
Este trabalho é objeto de relatório, cujo template e estrutura são descrito a seguir. O relatório deve ser enviado por email para mario@di.ubi.pt até 19 de maio de 2020 e deve ser apresentado e discutido numa das aulas práticas seguintes. A apresentação em formato powerpoint deve ser enviada até 24 horas antes da respetiva discussão. O tempo máximo para a apresentação é de 15 minutos e o tempo máximo para discussão é de 10 minutos.

Template e Estrutura do Relatório do Projeto
Template de Artigos de Conferência do IEEE
Estrutura do Relatório do Projeto em 8 Páginas:
Título (<8 palavras): deve centrar-se no tópico, ser curto, claro e eye-catching; Autores e filiações (em 1-2 linhas após o título).
Abstract (<50 ~ 100 palavras): deve explicitar os objetivos da investigação, resumir os resultados da investigação e destacar as contribuições inovadoras.
Introdução (incluindo o título, abstract) (1 página): deve motivar os leitores para ler o resto do artigo e prepará-los com o background necessário.
Arquitetura, algoritmos, métodos, protocolos, resultados analíticos e exemplo ilustrado, etc. (2 páginas).
Configuração experimental (2 página): arquitetura do sistema implementado, detalhes de instalação e configuração, benchmarks e conjunto de dados utilizado.
Resultados experimentais 2 páginas): em figuras ou tabelas e respetivas interpretações e análise de desempenho.
Conclusões e Referências (1 página): Conclusões e lista de artigos relevantes referenciados no texto.

Bibliografia de Apoio à Unidade Curricular / Bibliography
Distributed and Cloud Computing: From Parallel Processing to the Internet of Things, Kai Hwang, Jack Dongarra, Geoffrey C. Fox (Authors), Morgan Kaufmann, 1st edition, 2011, ISBN-13: 978-0123858801, 672 pages.
Guide to Reliable Distributed Systems: Building High-Assurance Applications and Cloud-Hosted Services, Kenneth P. Birman (Author), Springer, 2012, ISBN-13: 978-1447124153, 730 pages.
Cloud Computing: A Hands-On Approach, Arshdeep Bahga, Vijay Madisetti (Authors), Vijay Madisetti, 2014, ISBN-13: 978-0996025508, 456 pages.


Plano das Aulas Teóricas / Schedule

Aula 1 (fevereiro 20, 2020, 09:00-11:00, sala 6.17).

Sumário: Apresentação do professor aos estudantes. Indicação do horário de atendimento e da localização do gabinete do professor. Objectivos de Aprendizagem. Conteúdos programáticos. Método de avaliação. Bibliografia de apoio à unidade curricular. Planeamento das aulas teóricas. Marcação da data da frequência.

Aula 2 (fevereiro 27, 2020, 09:00-11:00, sala 6.17).

Sumário: Perspetiva global sobre a adoção das tecnologias e serviços da computação na cloud.

Aula 3 (março 5, 2020, 09:00-11:00, sala 6.17).

Sumário: Conceitos, níveis de implementação e ferramentas de virtualização.
Conceito de virtualização, máquinas virtuais (VM) e middleware de virtualização, níveis de implementação de virtualização e respetivo mérito relativo, exemplos de hypervisors.

Aula 4 (março 12, 2020, 09:00-11:00, sala 6.17).

Sumário: Conceitos, níveis de implementação e ferramentas de virtualização.
Conceito de virtualização, máquinas virtuais (VM) e middleware de virtualização, níveis de implementação de virtualização e respetivo mérito relativo, exemplos de hypervisors.

Aula 5 (março 19, 2020, 09:00-11:00, sala 6.17).

Sumário: Computação na nuvem e modelos de serviços.
Modelos de sistema para computação distribuída e na nuvem. Nuvens públicas, privadas e híbridas; Ecosistema da nuvem e tecnologias de suporte; Modelos de Serviços: Infrastructure-as-a-Service, Platform-as-a-Service, Software-as-a-Service, Anything-as-a-Service, Serverless computing.

Aula 6 (março 26, 2020, 09:00-11:00, sala 6.17).

Sumário: Paradigmas de Programação Paralela e Distribuída.
Computação paralela e paradigmas de programação; MapReduce, Twister e Iterative MapReduce; Apache Hadoop; Dryad e DryadLINQ da Microsoft; Linguagens de alto-nível Sawzall e Pig Latin; Aplicações de mapeamento para sistemas paralelos e distribuídos.

Aula 7 (abril 2, 2020, 09:00-11:00, sala 6.17).

Sumário: Paradigmas de Programação Paralela e Distribuída.
Computação paralela e paradigmas de programação; MapReduce, Twister e Iterative MapReduce; Hadoop Library do Apache; Dryad e DryadLINQ da Microsoft; Linguagens de alto-nível Sawzall e Pig Latin; Aplicações de mapeamento para sistemas paralelos e distribuídos.

Aula 8 (abril 16, 2020, 09:00-11:00, sala 6.17).

Sumário: Paradigmas de Programação Paralela e Distribuída.
Computação paralela e paradigmas de programação; MapReduce, Twister e Iterative MapReduce; Hadoop Library do Apache; Dryad e DryadLINQ da Microsoft; Linguagens de alto-nível Sawzall e Pig Latin; Aplicações de mapeamento para sistemas paralelos e distribuídos.

Aula 9 (abril 23, 2020, 09:00-11:00, sala 6.17).

Sumário: Análise e Comparação de Plataformas de Nuvem Públicas.
Nuvens públicas e oferta de serviços; IBM Cloud (BlueCloud/Bluemix), Amazon Web Services (AWS), Google App Engine (GAE), Microsoft Azure, Salesfource Force.com e Oracle Cloud.

Aula 10 (abril 30, 2020, 09:00-11:00, sala 6.17).

Sumário: Análise e Comparação de Plataformas de Nuvem Públicas.
Clouds públicas e oferta de serviços; IBM Cloud (BlueCloud/Bluemix), Amazon Web Services (AWS), Google App Engine (GAE), Microsoft Azure, Salesfource Force.com e Oracle Cloud.

Aula 11 (maio 7, 2020, 09:00-11:00, sala 6.17).

Sumário: Análise e Comparação de Plataformas de Nuvem Públicas.
Clouds públicas e oferta de serviços; IBM Cloud (BlueCloud/Bluemix), Amazon Web Services (AWS), Google App Engine (GAE), Microsoft Azure, Salesfource Force.com e Oracle Cloud.

Aula 12 (maio 14, 2020, 09:00-11:00, sala 6.17).

Sumário: Realização e correção da frequência.

Aula 13 (maio 21, 2020, 09:00-11:00, sala 6.17).

Sumário: Ambientes de software para computação em nuvem.
Open source Eucalyptus e Nimbus; OpenNebula, Sector/Sphere e OpenStack; Manjrasoft Aneka Cloud e Appliances.

Aula 14 (maio 28, 2020, 09:00-11:00, sala 6.17).

Sumário: Ambientes de software para computação em nuvem.
Open source Eucalyptus e Nimbus; OpenNebula, Sector/Sphere e OpenStack; Manjrasoft Aneka Cloud e Appliances.

Aula 15 (junho 4, 2020, 09:00-11:00, sala 6.17).

Sumário: Visita ao datacenter da Altice.



“One of the problems of being a pioneer is you always make mistakes and I never, never want to be a pioneer. It’s always best to come second when you can look at the mistakes the pioneers made”.

Seymour Cray (1925-1996), Public Lecture at Lawrence Livermore Laboratories on the introduction of the CRAY-1, 1976.
Last update: 2020/02/19.