Course teached as: B024323 - HUMAN COMPUTER INTERACTION Second Cycle Degree in COMPUTER ENGINEERING
Teaching Language
Lectures will be in Italian, with most slides and reading material in English. The final exam may be done in English or Italian. Students may interact with the instructor in English and/or Italian.
Course Content
The course is organized around a number of technical and theoretical topics related to Human Computer Interaction. Please see the Course Program for more details.
Books:
A. Cooper, R. Reimann, D. Cronin (2007). About Face 3: The Essentials of Interaction Design. Indianapolis, Indiana: Wiley.
Norman, D. A. (2013). The design of everyday things: Revised and expanded edition. Basic books.
Scientific papers selected from recent conferences journals focusing on HCI:
CHI: https://chi2015.acm.org/
ACM TOCHI: http://tochi.acm.org/
Learning Objectives
The objective of this course is to furnish students with the knowledge and capacities necessary to develop interactive systems – with particular attention to the elements and best practices of Human Computer Interaction (HCI):
- Knowledge of the psychological concepts most important for HCI: affordances, signifiers, mappings, Gestalt theory, and the psychology of action.
- Knowledge of the models and paradigms of programming most frequently used for HCI in practice.
- Knowledge of the principles of Needfinding used to establish human-centered, functional requirements for HCI systems.
- Knowledge of the design frameworks most used and the motivations behind their design.
- Broad knowledge about the current state-of-the-art behind the science and practice of HCI in academia and industry.
Prerequisites
Good knowledge of and experience programming in a high-level programming language (C/C++, Java, Python) is essential for this course. Previous experience with the python programming language and programming graphical user interfaces (GUIs) would be very useful, but not essential.
Teaching Methods
Lectures and practical laboratory sessions.
Type of Assessment
The final exam will consist of an oral exam based on a small, individual programming project and an extended project that should demonstrate the capacity to:
- The ability to plan and develop graphical user interfaces using event-oriented programming.
- The ability to apply the principle of Separation of Concerns and MVC in the context of GUI applications.
- The knowledge and ability to plan and execute needfinding exercises in order to identify persons and their scenarios.
- The ability to independently develop the ideas and implementation.
- The ability to plan, design, and execute usability tests according the the current best practices in HCI.
- The ability to communicate in written and oral form the motivations, implementation, and results of usability tests from the project.
Course program
The course is organized around the following technical and theoretical topics:
- Needfinding: activity and cognitive task analysis, establishing design goals.
- Prototyping: storyboarding, paper and digital mock-ups, high-fidelity digital prototypes.
- Programming models for HCI: events and managing asynchronicity, the model-view-controller model
- Usability assessment: testing, metrics, heuristic evaluation, user studies,
- Platforms: mobile, desktop, large surface, wearable.
- Technical topics: python programming for user interfaces, the Kivy framework, managing asynchronicity, rapid prototyping tools.
- Special topics: video games and HCI, machine learning and HCI.
- Advanced theoretical, applied, and emerging topics: natural interaction, tangible interaction, Kinect, the Internet of Things (IoT), functional reactive programming, gamification, etc.
Please note that this list of topics is tentative and will be finalized before the beginning of the semester.