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 2017/2018
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


Objetivos Gerais e Resultados de Aprendizagem / Course Objectives
O objetivo da unidade curricular consiste em dotar os estudantes de uma perspetiva ampla e integradora da virtualização e da computação na cloud. 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 cloud, 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 infra-estruturas de virtualização e deve ser capaz de desenvolver aplicações e sistemas, escaláveis e fiáveis, para computação na cloud.
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, students 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 virtualization infrastructures and must be able to develop scalable and reliable applications and systems for cloud computing.

Programa / Syllabus
Ambientes de software para sistemas distribuídos e clouds. Virtualização: Conceitos, Níveis de Implementação, Estruturas/Ferramentas e Mecanismos. Computação na Cloud e Modelos de Serviços. Paradigmas de Programação Paralela e Distribuída. Análise e Comparação de Plataformas de Cloud Públicas. Ambientes de Software Cloud Emergentes.
Software environments for distributed systems and clouds. Virtualization: Concepts, Levels of Implementation, Structures/Tools and Mechanisms. Cloud Computing and Service Models. Paradigms of Parallel and Distributed Programming. Analysis and Comparison of Public Cloud Platforms. 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: 15%.
Projeto laboratorial ou de campo: 45% (20%+25%)

Teste de avaliação de conhecimentos/Exame: Teste sem 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: Trabalhos realizados em grupo, sendo cada grupo constituído por 2 estudantes; São propostos 3 trabalhos laboratoriais para realização durante as aulas práticas.

Written test/Exam: 40%.
Theorectical work: 15%.
Field or laboratory project: 45% (20%+25%)

Written test/Exam: Test with closed 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: Works should be carried out in a group, each group consisting of 2 students; Three laboratory projects are proposed to be carried out during practical lectures.

Trabalho de síntese/Theorectical work
Tema 1 – Análise de Plataformas Cloud para Serverless Computing: AWS Lambda, Azure Functions, Google Cloud Functions
Tema 2 – OpenStack
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 ser escrito usando o template do IEEE disponível na parte dos Projetos Laboratoriais e deve ter, no máximo, 12 páginas. O relatório deve ser enviado por email, para o endereço mario@di.ubi.pt e com subject SIC 2017/2018 – Trabalho de Síntese, até 2018.06.08 23:59.

Projeto Laboratorial
Enunciado do Projeto Laboratorial 1 – Instalação e configuração do Apache Hadoop
Enunciado do Projeto Laboratorial 2 – Desenvolvimento e instalação de uma aplicação num ambiente de cloud pública

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 23, 2018, 11:00-13:00, sala 6.16).

Sumário: Apresentação do professor aos estudantes. Indicação do horário de atendimento e da localização do gabinete do professor. Objectivos da unidade curricular e competências a adquirir. 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 (março 2, 2018, 11:00-13:00, sala 6.16).

Sumário: Ambientes de software para sistemas distribuídos e clouds.
Service-Oriented Architecture (SOA), Tendencias sobre sistemas operativos distribuídos, Modelos de programação paralela e distribuída.

Aula 3 (março 9, 2018, 11:00-13:00, sala 6.16).

Sumário: Conceitos e níveis de implementação 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, requisitos de projeto de Virtual Machine Monitors (VMM)/Hypervisors, comparação de VMMs e Hypervisor Software Packages: VMware Workstation, VMware ESX, Xen e QEMU/KVM.

Aula 4 (março 16, 2018, 11:00-13:00, sala 6.16).

Sumário: Estruturas, ferramentas e mecanismos de virtualização ao nível de hardware.
Tipos de hypervisors (hypervisors nativos ou bare-metal versus hosted hypervisors), arquiteturas de hypervisors (arquiteturas micro-kernel versus arquiteturas monolíticas, a arquitetura Xen), hosted hypervisors, hypervisors nativos com virtualização total e tradução binária, hypervisors nativos com paravirtualização e suporte de compilador.

Aula 5 (março 23, 2018, 11:00-13:00, sala 6.16).

Sumário: Computação na Cloud e Modelos de Serviços.
Modelos de sistema para computação distribuída e na cloud. Clouds públicas, privadas e híbridas; Ecosistema cloud 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 (abril 6, 2018, 11:00-13:00, sala 6.16).

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 13, 2018, 11:00-13:00, sala 6.16).

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 20, 2018, 11:00-13:00, sala 6.16).

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 27, 2018, 11:00-13:00, sala 6.16).

Sumário: Análise e Comparação de Plataformas de Cloud 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 10 (maio 4, 2018, 11:00-13:00, sala 6.16).

Sumário: Análise e Comparação de Plataformas de Cloud 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 11, 2018, 11:00-13:00, sala 6.16).

Sumário: Análise e Comparação de Plataformas de Cloud 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 Suplementar (maio xx, 2017, 14:30-17:30).

Sumário: Visita ao datacenter da Portugal Telecom.

Aula 12 (maio 18, 2018, 11:00-13:00, sala 6.16).

Sumário: Análise e Comparação de Plataformas de Cloud 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 13 (maio 25, 2018, 11:00-13:00, sala 6.16).

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

Aula 14 (junho 1, 2018, 11:00-13:00, sala 6.16).

Sumário: Ambientes de Software Cloud Emergentes.
Open source Eucalyptus e Nimbus; OpenNebula, Sector/Sphere e OpenStack; Manjrasoft Aneka Cloud e Appliances.

Aula 15 (junho 8, 2018, 11:00-13:00, sala 6.16).

Sumário: Ambientes de Software Cloud Emergentes.
Open source Eucalyptus e Nimbus; OpenNebula, Sector/Sphere e OpenStack; Manjrasoft Aneka Cloud e Appliances.



“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: 2018/02/23.