Vai al contenuto principale
Oggetto:
Oggetto:

Interazione Uomo Macchina

Oggetto:

Human-computer Interaction

Oggetto:

Anno accademico 2022/2023

Codice dell'attività didattica
MFN1353
Docenti
Cristina Gena (Docente)
Marino Segnan (Docente)
Corso di studi
[008707] Laurea in Informatica
Anno
3° anno
Periodo didattico
Primo semestre
Tipologia
A scelta dello studente
Crediti/Valenza
6 CFU - Numero di ore - Number of hours: 24 (in aula) + 30 (in laboratorio)
SSD dell'attività didattica
INF/01 - informatica
Modalità di erogazione
Tradizionale
Lingua di insegnamento
Italiano
Modalità di frequenza
Facoltativa
Tipologia d'esame
Scritto più orale obbligatorio
Prerequisiti
Si richiede una buona conoscenza delle basi di dati (fornita dall'insegnamento di Basi di Dati), dell'analisi e della progettazione object-oriented (fornita dagli insegnamenti di Programmazione II e di Algoritmi e strutture dati) e dei fondamenti della programmazione distribuita (fornita dall'insegnamento di Programmazione III). Lo studente deve inoltre avere la capacità di scrivere, compilare e verificare la correttezza di programmi in Java.
Insegnamenti propedeutici (forniscono le competenze attese in ingresso): Basi di dati, Algoritmi e strutture dati, Programmazione II e III.
The student is requested to have good knowledge of data base systems (provided by the Basi di Dati course), object-oriented analysis and design (provided by courses such as Programmazione II, Algoritmi e Strutture Dati), foundations of distributed programming (provided by the Programmazione III course). Moreover the student must be able to write, compile and verify the correctness of Java programs.
Preparatory Courses (providing the expected entry skills): Basi di Dati, Algoritmi e strutture dati, Programmazione II e III.
Oggetto:

Sommario insegnamento

Oggetto:

Obiettivi formativi

Nella progettazione e sviluppo di un’applicazione software si devono infatti tenere in conto due aspetti fondamentali:

  1. l’interazione con l’utente che, indipendentemente dall’efficacia delle funzionalità offerte da un’applicazione, influenza sensibilmente il suo successo in termini di utilizzo. L’applicazione deve quindi essere usabile ed accessibile per permettere un uso agevole del software e prevenirne l’abbandono da parte degli utenti;
  2. l’implementazione dell’applicativo, che richiede di guardare “dietro all’interfaccia utente” per andare a fondo su aspetti architetturali e tecnologici che possono influenzare non solo le prestazioni dell’applicazione, la sua scalabilità e robustezza, ma anche le tipologie di servizio che possono effettivamente essere offerte.

Partendo da queste considerazioni, l’insegnamento concorre agli obiettivi formativi dell'ambito propedeutico del Corso di Laurea in Informatica (L31) e fa parte dell’area Informatica caratterizzante. È mirato a fornire alle studentesse e agli studenti solide conoscenze di base sull'interazione uomo-macchina e sulle metodologie per la progettazione e lo sviluppo di applicazioni mobili.

L'insegnamento si pone quindi un duplice obiettivo: da una parte, fornire la conoscenza di base necessaria per il disegno corretto di interazioni uomo-macchina, che sta alla base della progettazione di applicazioni di ogni genere (web e non, mobili, etc.). Dall’altra, concentrandosi sulle applicazioni mobili, che sono oggetto specifico dell'insegnamento, fornire la conoscenza di base necessaria per la progettazione e lo sviluppo di applicazioni interattive, accessibili da terminali mobili (come per esempio gli smart phone), e caratterizzate da una logica applicativa mediamente complessa.

Più precisamente, per quanto riguarda l'interazione uomo-macchina, verranno acquisite competenze sia teoriche sia pratiche nel disegno corretto di interazioni, con specifico riferimento alla progettazione user-centered.

Per quanto riguarda gli aspetti architetturali e tecnologici, l'insegnamento tratterà dal punto di vista sia teorico che pratico la programmazione lato client per device mobili su piattaforma Android e lo sviluppo di interfacce mobili. Per permettere agli studenti/studentesse di sperimentare le nozioni apprese durante le ore di teoria in aula, l'insegnamento include una sostanziale parte di laboratorio. Inoltre durante le ore di laboratorio è previsto lo sviluppo di un’applicazione realistica con interfaccia mobile ed una introduzione al linguaggio Python.

 

When designing and developing software applications there are two fundamental aspects to be considered: (i) the role of the interaction with the user which, regardless of the efficacy of the functions offered by the application, sensibly influences its success in terms of usage. The application must be usable and accessible in order to allow an easy usage of the software and to avoid that users abandon it. (ii) the implementation of the application, which requires to look "behind the user interface" in order to analyze architectural and technological aspects that can affect not only the performance, scalability and robustness of an application, but also the types of services that can actually be offered.

Given these two considerations, in compliance with the training objectives of the Computer Science Bachelor Program (Corso di Laurea in Informatica (L31)) and being part of the area “Informatica caratterizzante”, this course aims at providing students with robust basic knowledge about Human-Computer Interaction and methodologies for the design and development of three-tier Web-based and mobile applications.

The course has indeed a double objective: on the one hand, providing students with the knowledge needed for a correct design of human-computer interaction, which underlies the design of all kinds of applications (web-based, mobile ones, etc.). On the other hand, focusing on mobile applications, which are specifically addressed by this course, providing students with the basic knowledge needed in order to design and develop interactive applications for mobile terminals (such as smart phones).

More specifically, as regards human-computer interaction, the course will provide theoretical and practical knowledge and skills for correct interaction design, with a specific focus on user-centered design.

Regarding the architectural and technological aspects the course will cover, both theoretically and practically client-side programming in Android and the development of mobile interfaces. In order to allow students to practice the concepts learned in the classroom a substantial part of the course is carried out in the laboratory.  Moreover during the lab it is planned to develop a realistic web-based application and an introduction to the Python programming language .

 

Oggetto:

Risultati dell'apprendimento attesi

La preparazione e la discussione del progetto di laboratorio sono volte a stimolare le capacità di organizzare il lavoro in piccoli gruppi (max 4 studentesse/studenti), e poi di illustrare verbalmente le soluzioni adottate (communication skills). Gli studenti/studentesse dovranno essere in grado di valutare l'usabilità e la bontà dell'esperienza utente proposta dal loro prototipo (Making judgements).

I temi introdotti durante il laboratorio corredano e integrano le conoscenze derivanti dalla parte teorica (knowledge and understanding) e permettono agli studenti/studentesse di familiarizzare con le metodologie e tecnologie introdotte, anche investigando soluzioni alternative (applying knowledge and understanding).  

Lo studente dovrà avere assimilato (Learning skills): la progettazione centrata sull’utente e il processo di User Experience - UX (personas, rapid prototyping, ecc); euristiche e valutazione di usabilità per il desktop e mobile web; progettazione e organizzazione dell’architettura dell’informazione; valutazione dell’accessibilità web secondo le linee guida internazionali e nazionali.

Lo studente/studentessa acquisirà anche la conoscenza delle varie architetture di riferimento per lo sviluppo di applicazioni web e mobile, e dei loro pro e contro; inoltre lo studente/studentessa acquisirà la conoscenza dei modelli più comunemente adottati per gestire dialoghi mediamente complessi e articolati tra utente e applicazione, e delle tecnologie attualmente utilizzate per l’implementazione delle applicazioni e delle loro interfacce (web e mobile). Lo studente/studentessa dovrà essere in grado di sviluppare applicazioni lato client in ambiente Android e sviluppare un programma scritto in linguaggio Python (Learning skills).

 

The preparation and discussion of the laboratory project are aimed at stimulating the ability to organize work in small groups (max 4 students), and then to verbally illustrate the solutions adopted (communication skills). Students should be able to evaluate the usability and goodness of the user experience proposed by their prototype (Making judgements).

The topics introduced during the lab accompany and complement the knowledge derived from the theoretical part (knowledge and understanding) and allow students to familiarize themselves with the methodologies and technologies introduced, including investigating alternative solutions (applying knowledge and understanding).

The student should have assimilated (learning skills): user-centered design and the User Experience - UX process (personas, rapid prototyping, etc.); heuristics and usability evaluation for desktop and mobile web; information architecture design and organization; web accessibility evaluation according to international and national guidelines.

The student will also acquire knowledge of the various reference architectures for the development of web and mobile applications, and their pros and cons; in addition, the student will acquire knowledge of the most commonly adopted models for handling moderately complex and articulated user-application dialogues, and of the technologies currently used for the implementation of applications and their interfaces (web and mobile). The student should be able to develop client-side applications in the Android environment and develop a program written in the Python language (Learning skills).

Oggetto:

Modalità di insegnamento

L’insegnamento è diviso in una parte di teoria e una di laboratorio.

Per la parte di teoria sono previste 24 ore di lezione frontali che seguono il programma sopra descritto, integrate da casi di studio e da esercitazioni volte ad illustrare l’applicazione pratica dei concetti appena studiati.

La parte di laboratorio consiste di 30 ore ed è focalizzata sulla programmazione client-side in ambiente Android utilizzando le API Java del sistema operativo. Verra' inoltre sviluppata un' applicazione scritta in linguaggio Python .

Le lezioni si svolgono in maniera interattiva e sono corredate da vari esercizi miranti a fornire esempi pratici. Le sperimentazioni che vengono effettuate durante le ore di laboratorio, strutturate come sequenze di esercizi specifici, sono fondamentali per aiutare gli studenti/studentesse a comprendere e assimilare i contenuti teorici spiegati a lezione in quanto permettono di mettere in pratica i concetti e le metodologie illustrate su esempi concreti. Inoltre lo sviluppo del progetto di laboratorio permette di consolidare le conoscenze teoriche in un caso realistico di media complessità. Si consiglia caldamente la frequenza costante alle lezioni teoriche e alle esercitazioni.

È inoltre fondamentale iscriversi ai corsi online su I-Learn (Interazione Uomo Macchina), all’interno dei quali è messo a disposizione materiale didattico di supporto.

 The teaching is divided into a theory part and a laboratory part.

For the theory part, there are 24 hours of frontal lessons that follow the program described above, supplemented by case studies and exercises aimed at illustrating the practical application of the concepts just studied.

The lab part consists of 30 hours and is focused on client-side programming in an Android environment using the Java API of the operating system. An application written in Python language will also be developed.

The lessons take place in an interactive way and are accompanied by various exercises aimed at providing practical examples. The experiments that are carried out during the laboratory hours, structured as sequences of specific exercises, are essential for helping students to understand and assimilate the theoretical contents explained in class as they allow them to put into practice the concepts and methodologies illustrated on concrete examples. Furthermore, the development of the laboratory project allows to consolidate the theoretical knowledge in a realistic case of medium complexity. Constant attendance at theoretical lessons and exercises is strongly recommended.

It is also essential to enroll in online courses on I-Learn (Man-Machine Interaction), within which support teaching material is made available.

Oggetto:

Modalità di verifica dell'apprendimento

L'esame è composto da una VERIFICA DI LABORATORIO che prevede la discussione dei  progetti di laboratorio svolti durante il corso. I progetti si articola in due parti:

  • Ia) prototipo Figma di app mobile, consegnato insieme ad una presentazione delle scelte progettuali in termini di UX e di 3 schede di Personas, una pagina web correlata alla app Android, realizzata secondo le linee guida di accessibilità presentate nell’insegnamento;
  • Ib) app Android (precedentemente prototipata) e programma scritto in linguaggio Python. La discussione deve essere effettuata preferibilmente in unica soluzione, con tutti i membri del gruppo di laboratorio presenti.

Il voto per ciascuna parte di laboratorio è un numero compreso tra 0 e 15, si considerano sufficienti i voti >=9. CALCOLO DEL VOTO FINALE DI ESAME: Sia X il voto della parte Ia; sia Y il voto della parte Ib. Il voto Fin finale dell'esame si ottiene come segue: Fin = (X+Y). Note: i voti acquisiti durante le prove di laboratorio, rimangono validi fino al termine della terza sessione d’esame (quella che precede l'inizio del nuovo corso).

Quando si superano entrambe le prove, è necessario registrare il voto finale entro i limiti imposti dal Regolamento di Ateneo.

The exam consists of a LABORATORY TEST that involves discussion of laboratory projects carried out during the course. The projects consist of two parts:

Ia) Figma mobile app prototype, delivered along with a presentation of the design choices in terms of UX and 3 Personas tabs, a web page related to the Android app, built according to the accessibility guidelines presented in the teaching;
Ib) Android app (previously prototyped) and program written in Python language. The discussion should preferably be done in one go, with all members of the lab group present.
The grade for each lab part is a number between 0 and 15, grades >=9 are considered sufficient. CALCULATION OF FINAL EXAMINATION VOTE: Let X be the grade for part Ia; let Y be the grade for part Ib. The final Fin grade of the exam is obtained as follows: Fin = (X+Y). Note: The grades acquired during the lab tests, remain valid until the end of the third exam session (the one before the start of the new course).

When both tests are passed, the final grade will be recorded.

Oggetto:

Programma

  • Parte Ia - Human-computer interaction (HCI)
    • I concetti e ai principi dell’Interaction Design e della User Experience (UX)
    • Il processo di UX e il rapid prototyping
    • Le linee guida di usabilità per il web (desktop e mobile)
    • Principi di architettura dell’informazione
    • Le linee guida di accessibilità internazionali e nazionali: le WCAG, le linee guida AGID
    • Il design centrato sull’utente e le metodologie di valutazione: la fase di valutazione preliminare, la fase di valutazione formativa e la fase finale.
    • La valutazione dell’accessibilità, sia oggettiva che soggettiva.

 

  • Parte Ib - Programmazione di device mobili.
    • Il sistema operativo Android e le sue peculiarità
    • Gli elementi costitutivi di una applicazione utente ed il suo ciclio di vita.
    • Le pratiche consolidate e l'ambiente di sviluppo di una applicazione Android.
    • Utilizzo del framework Flutter per la scrittura dei tipi di applicazioni più utilizzati
    • Il linguaggio avanzato Python: principali differenze rispetto al linguaggio Java e caratteristiche più interessanti

  • Part Ia - Human-computer interaction (HCI)
  • Concepts and principles of Interaction Design and User Experience (UX)
  • UX processes and rapid prototyping
  • Desktop and mobile web usability guidelines
  • Principles of information architecture
  • International and national accessibility guidelines: the WCAGs, the AGID guidelines
  • User-centered design and evaluation methodologies: the preliminary evaluation phase, the formative evaluation phase, and the final phase.
  • The evaluation of accessibility, both objective and subjective

 

  • Part Ib - Mobile Programming
    • The Android operating system and its peculiarities.
    • Essential elements of an interactive application and life cycle.
    • Best practices and development environment for the development of an Android application.
    • Usage of the Flutter framework for the implementation of the most common types of applications
    • Python, an advanced programming language: main differences with respect to Java and most interesting features

.

Testi consigliati e bibliografia

Oggetto:

PARTE 1A:

Altri riferimenti (per consultazione):

  • Don't make me think. Un approccio di buon senso all'usabilità web e mobile, Steve Krug, Tecniche nuove
  • https://www.interaction-design.org/literature
  • Interaction Design: Beyond Human-computer Interaction, Preece et al., Wiley
  • Principi di Web design, di Joe Sklar, Apogeo

PARTE 1B:

1A:

Other references:

  • Don't make me think. Un approccio di buon senso all'usabilità web e mobile, Steve Krug, Tecniche nuove
  • https://www.interaction-design.org/literature
  • Interaction Design: Beyond Human-computer Interaction, Preece et al., Wiley
  • Principi di Web design, di Joe Sklar, Apogeo

1B:



Oggetto:
Ultimo aggiornamento: 29/05/2023 15:41
Location: https://laurea.informatica.unito.it/robots.html
Non cliccare qui!