By the end of the course students will have acquired knowledge about the tools and methodologies for creating sophisticated applications characterized by context awareness and intelligent reactions, both in terms of development process, and in terms of methodological and technological tools.
Progress will be measured by multiple public presentations by groups of students on the various milestones of the development process. Individual knowledge will be ascertained by oral examination after the course.
By the end of the course:
- Students will know how to elicit requirements, investigate market opportunities, conduct feasability studies, design a smart software/hardware system understood as a realistic product
- Students will be able to research available methods and techniques for product development in the context of smart applications, including in particular AI-based techniques
- Students will be able to design and execute a validation plan, measure their own progress, and ascertain market acceptance of a smart product
- Students will be able to present in public the results of their activity
Skills will be assessed based on the contents and delivery of presentations, and during in-depth discussions with the instructor during small group-based meetings
Students will be able to conduct research, design and development work as part of a small team (of 4-5 members), while at the same time acting responsibly towards other teams working on other parts of the same product.
In particular, they will be able to use tools and procedures for collaborative work (both development and documentation), and to document and evolve guarantees provided to external users.
Behaviours will be assessed by observation of intra-team and inter-team dynamics during the practical sessions of the course.
Seminars on specific techniques or methods.
Full-class workshops on product design.
Team-based laboratory work (both autonomous and with the help of instructors) on design and development.
The course aim is to explore methods and technologies for the development of smart connected applications, i.e. applications which exhibit intelligent behaviour -- through the use of artificial intelligence techniques introduced in other courses -- and that are deployed in immersive environments, including smart objects (as embodied by Internet of Things devices), mobile devices (smartphones, tablets), wearables (smartwatches, fitness trackers), home automation devices, web technologies, and cloud services and infrastructure. As such, applications considered for the course will include elements of context-awareness, sensor intelligence, spoken-language interfaces.
The course will be based around a single case study for a novel smart application; students will cooperate as a single team, under the leadership of the instructor, in the design and implementation of a complete solution. In addition to standard lectures, classroom activities will include workshop-like sessions, where alternative designs are discussed, decisions are taken, and tasks are assigned. Weekly homework on the various phases of the joint project will be assigned to the team, and results reviewed the following week. The final goal is the delivery of a fully-functioning prototype of a smart application addressing the initial problem.
While the specific technologies adopted for each case study will vary based on needs and opportunities, the following general themes will be explored in lectures (examples of specific subjects are noted next to each theme):
- Introduction to the course and to the case study. Examples: a voice-activated ambient assistant to answer student queries about the logistics of lectures in a classroom building, or autonomous software for a robotic rover for exploring inaccessible environments
- Common designs for smart applications. Examples: fuzzy logic in control systems or cloud analysis of field sensors data streams
- Make or buy: selecting appropriate procurement strategies. Example: writing your own RRN architecture vs. using cloud services
- Development platforms for smart objects. Examples: Brillo (IoT devices) or Android TV (Smart TVs)
- Development platforms for smart architectures. Examples: TensorFlow (server-side RNNs), or the Face Recognition API (mobile)
- Cloud services for smart applications. Examples: Google Cloud Machine Learning API, Google Cloud Vision API, Google Cloud Speech API, or Deploying Deep Neural Networks on Microsoft Azure GPU VMs
- Deployment and operations. Examples: cloud hosting vs. device hosting, or harnessing user feedback to drive improvement
- Measuring success: methods and metrics. Examples: defining user engagement and satisfaction metrics, or assessing the naturalness of smart interactions
References to tools and relevant academic papers will be provided during the course, depending on the particular methods and techniques explored for each year's project.
Attendance is not mandatory, but participation in the course activities is. Students who cannot attend in presence, can join a team and collaborate remotely. Depending on the circumstances, they can be embedded in an existing team, or form an all-remote team. Specific office hours for students partecipating remotely from different timezones can be arranged on request.
Continous assessment through joint meetings and class presentations.
Individual oral exam at the end of the course.
Google Classroom on the University GSuite (link provided through the Esami platform)