Italian. If a Erasmus student is attending the class, the course will be taught in English.
The course is an introduction to programming applications in the cloud computing environment with references to the high performance computing and distributed applications. The course contains an introduction to the main cloud computing architectures as Infrastructure as a Service, Platform as a Service and Software as a Service. Part of the course is devoted to the introduction to the services offered by Amazon Web Services and to the interfacing the cloud with single board computers and Arduino or similar microcontrollers. During the lessons, continuous references are made to the technologies for the development of web applications, mobile applications and mobile multi-platform hybrid applications, the management and representation of spatial data and distributed / wearable pervasive systems.
The course contains an introduction to the Python language, used for the development of software projects and hardware in the activities (single or group) in the Laboratory that are an integral part of the course. The course has a typically practical / application setting designed to solve concrete problems and develop software that is actually usable.
Understanding skills: The student must demonstrate knowledge and understanding of the fundamentals of cloud technologies and the Internet of things, with particular regard to complex and distributed applications, web service-based application development and analysis methodologies, Python programming language and its application context, methodologies and software development techniques in this context.
Applicative skills: The student must demonstrate his / her knowledge acquired to solve computational problems such as cloud applications or web /mobile / embedded hybrid applications based on cloud technologies in concrete contexts, to develop design solutions and analyze them from the point of view of architecture and usability, to consciously use one or more programming languages to implement a complex web application. These capabilities also extricate in a thorough and aware use of the tools offered by cloud computing and the Internet of things and different application frameworks.
Judgment autonomy: The student must be able to know how to independently evaluate the results obtained from the application developed in both design and software implementation, evaluating its effectiveness and efficiency.
Communication skills: The student must be able to draw up a project submission report and document its implementation, including working in a group, using advanced writing / documentation tools, with particular reference to the use of productivity tools for developers as systems for Shared Publishing (Google Drive), Remote Collaboration (Slack), Production Management (Trello), Online Repository Management (GitHub), Cloud Infrastructure as a Service (Amazon AWS) Using the Web Technology Terminology Correctly Also in English.
Learning skills: The student must be able to update and deepen autonomously specific web technology topics and applications, including accessing databases, online document repositories, software and application libraries, and other ways available from the network.
Familiarity with computer programming
Knowledge of elements computer network.
Familiarity with computational architectures.
Storage as a service
Using cloud storage services
Distributed Databases: CosmosDB
Computing as a service
Using and managing virtual machines
Using and managing containers
Singularity: a Container System for HPC Apps
Serverless and Function as a Service
Data analytics in the cloud
Streaming data to the cloud
Machine learning in the cloud
Supplement: Autoencoders and Manifold Learning
The Globus research data management platform
Building your own cloud with Eucalyptus (with Rich Wolski)
Building your own cloud with OpenStack (with Stig Telfer)
Building your own SaaS
Security and privacy
History, critiques, futures.
Managing data in the cloud
Computing in the cloud
Cloud as platform
Building your own cloud
Security and other topics
Real cases imitation
The purpose of the verification procedure is to quantify the level of achievement of the training objectives previously indicated.
The verification procedure is indicated precisely in the e-learning platform of the Department of Science and Technology. In summary: around 1/3 of the course, students submit a draft proposal reinforced by a presentation consisting of no more than 3 slides and a duration not exceeding 3 minutes. The proposal may be individual or group consisting of no more than 3 students. The proposal is amended by the teacher, rejected or assigned as an exam project. About 2/3 of the course is organized with a presentation of the projects in which each student or group of students illustrates the state of the art of the project and discusses with teachers and other students about its potentialities and weaknesses.
At the end of the course is organized a final presentation that has no value of examination but a moment of communication of the work done. The project must be released in open source rather than Apache 2.0 on a public repository such as, for example, GitHub at least 2 days before the exam date and must be online at the end of the exam. The verification procedure consists of an individual oral exam (60% of the vote), the presentation of the project part of its competence (20% of the vote), project demonstration (20% of the vote). There are 2 Test Examinations (40% of the oral exam) + 2 HomeWork (20% of the oral exam) individual.