Italian. If an Erasmus student is attending the class, the course will be taught in English.
The course is an introduction to programming applications in the internet environment with references to the use of mobile devices. The course contains an introduction to programming web applications using the LAMP platform (Linux Apache MongoDb Python). Part of the course is devoted to the introduction to Cloud Computing with particular reference to the services offered by Amazon Web Services for web technologies and the Internet of Things with Arduino or similar microcontrollers. During the lessons, continuous references are made to the technologies for the development of mobile multi-platform hybrid applications, the management and representation of spatial data on the web 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 web technologies, cloud computing, and the Internet of things, with particular regard to complex and distributed web applications, web-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 web applications or mobile / embedded hybrid applications based on web 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.
Knowledge of the topics in Programming I, Programming II is needed: the course is SUGGESTED to be attended at the 3rd year.
Web technologies - Client-server paradigm - Hypertext, multimedia, hypermedia - Web as a hypermedia document - HTTP protocol, requests, responses, headers, cookies and session maintenance - Web server.
Introduction to Cloud Computing - Infrastructure as a Service - Virtualization - Virtual Machines Image and Instances - Managing Virtual Machines in Amazon Web Service - Preparing Virtual Machines for Web Services Production - Accessing AWS Virtual Machines - Linux Management Elements Virtual machines and software for web technologies.
Introduction to Python Language - Buildings, Variables, Data Types - Python advanced topics: classes, objects and namespaces - Python as a web technology language: introduction to Flask - Generating web pages with Flask.
Web clients - browsers - other clients - mobile applications
Server side and client side programming
Extensible Markup Language - Markup - XML as a Template - Syntax Features - Well-Formatted XML Documents - XHTML and HTML 5
General Features of a Web Page - Elements and Attributes - Basic Document Structure - Text, hypertext, images, lists and lists, forms, tables, links, and client side scripting - Cascading style sheets (CSS): Introduction.
Dynamic page generating - Managing http headers - File attachching - Templating in Python / Flask.
Introduction to NoSQL and Mongodb databases - Python & MongoDb
Geographic data processing: LeatLet & GeoJson
Internet of things, introduction to Arduino and web technologies
Application exercise: "The Imitation Game" - Development of an imitating application: "Facebook", "Uber", "Open table".
The Python Langiage
The Web Services
Web page description languages
Client side scripting
Internet of things
Web Technologies – U.K. Ray. Oxford Press
Learning Python - M. Lutz. O'Reilly
Flask Web Development: Developing Web Applications with Python - M. Grimberg. O'Reilly
Amazon Web Services in Action - A. Witting, M. Witting. Manning.
Programming Arduino – S. Monk, McGrawHill
The slides (.pdf format) of all lessons are available on the e-learning platform of the Department of Science and Technology, along with an on-line self-assessment quiz, exercises, deepening projects, lab notes, an introduction note Operational to the software tools handled. In particular, for each edition of the course, the slides are produced in a Google Drive-sharing environment with students who can enrich content with specific content. All material produced in this form, while respecting the rights of individual sources, is licensed under Creative Commons.
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.